さて、前回、公表したphpのスクリプト (今は中身が分からなくても全然大丈夫です。何せ、実験的&実用には少々苦 しいシロモノなので。。。) -------------------------------------------------------------------------------- <?php $xlsfile="C:/Inetpub/wwwroot/php/060.xls"; if (!$conn = new COM("ADODB.Connection")) exit("Unable to create an ADODB connection<br>"); $strConn = "DRIVER={Microsoft Excel Driver (*.xls)};DBQ=" . realpath($xlsfile); $conn->open($strConn); $strSQL = "SELECT * FROM yuubin"; $rs = $conn->execute($strSQL); $url = $rs->Fields(1); while (!$rs->EOF) { print "$url->value<BR>"; $rs->MoveNext(); } $rs->Close(); $conn->Close(); $rs = null; $conn = null ?> -------------------------------------------------------------------------------- ですが、あくまでもエクセルのデータがphpで扱えることを確認するのが目的 なので、正直言いますと、それほど、いじって遊んでみる箇所はありません。 前回も話しましたが、あくまでも実験的なものなので、スクリプトの中身は理 解する必要はありませんし、ただ単に「フ〜ン」といった感じで以下を読んで いただければ、有難いです。 ■スクリプトでちょっと遊んでみる■ すでにお気付きのように、上のスクリプトで表示された内容は、元のエクセル の、B列のデータとなります。
それを指定しているのが、スクリプトの9行目にある、 「$url = $rs->Fields(1);」 の部分です。 では、ここで試しに、ここの部分を 「$url = $rs->Fields(2);」 と変えてみてください。 変え方は、「060.php」の拡張子を変えて、「060.txt」にすれば、メモ帳で内 容を確認・変更できますので、変更後は、「061-1.txt」と名前を名前を変えて 保存した後、拡張子を元に戻して、「061-1.txt」→「061-1.php」という具合 です。 そして、前回と同様、インターネットエクスプローラのアドレス欄に http://localhost/php/061-1.php と入力すると、今度は元のエクセルのデータのC列のデータが表示されるかと思います。
「ウ〜ン、いまいちよく分からないなぁ〜」と言う場合には、さらに直感的な 方法を紹介します。 上で話した 「$url = $rs->Fields(1);」 の部分を 「$url = $rs->Fields("name");」 というふうに数字の部分を、元のエクセルのB1セルに入力してある文字に変 えてみます。 そして、例えば、ここではその変更したファイル名を「061-2.php」として、今 まで同様、インターネットエクスプローラの欄に http://localhost/php/061-2.php と入力してみると。。。そう、一番最初の例のように、エクセルのデータのB 列のデータが表示されます。
同様に、今度は元のエクセルのC1セルにある文字「yomi」という文字を入れ てみると、今度はエクセルのC列のデータが表示されます。 以上、お話したように、phpスクリプトの「$url = $rs->Fields(1);」の部分 は、エクセルのどの列のデータを表示するか、ということを指定していること になります。 本来、エクセルだけを見てみると、1列目だけ英数字表記になっていて、奇異 な感じがしたかもしれませんが、ここを漢字表記にして試してみると、どうも、 私の場合、スクリプトがエラーで動かなかったので、ワザと英字表記にした次 第です。 もし、漢字表記でもうまくいったヨ〜、という方がおりましたら報告してくだ さると、こちらとしては、非常に嬉しいです。 ■複数の列データを表示させる■ さて、ここで、さらに予想すると、今は、単にエクセルの、ある1列しか表示 していませんが、それを複数指定すれば、複数の列の内容がインターネットエ クスプローラに表示されるかもしれない。。。ということが考えられます。 実は、それも可能でして、例えば、B列からD列の3列を表示する場合には、 次のようになります。 -------------------------------------------------------------------------------- <?php $xlsfile="C:/Inetpub/wwwroot/php/060.xls"; if (!$conn = new COM("ADODB.Connection")) exit("Unable to create an ADODB connection<br>"); $strConn = "DRIVER={Microsoft Excel Driver (*.xls)};DBQ=" . realpath($xlsfile); $conn->open($strConn); $strSQL = "SELECT * FROM yuubin"; $rs = $conn->execute($strSQL); $url1 = $rs->Fields("name"); $url2 = $rs->Fields("yomi"); //ここの2行を追加 $url3 = $rs->Fields("todofuken"); //しています while (!$rs->EOF) { print "$url1->value<BR>"; print "$url2->value<BR>"; //ここの2行を追加 print "$url3->value<BR>"; //しています print("<br>"); //項目間を空けるための単なる空行です $rs->MoveNext(); } $rs->Close(); $conn->Close(); $rs = null; $conn = null ?> -------------------------------------------------------------------------------- この場合、初めの例とは一部異なり、「$url」という文字の並びが、「$url1」 〜「$url3」という具合に、3個を区別していることに、ご留意ください。 仮にここで、このスクリプトファイルを「061-3.php」として、今まで同様、 インターネットエクスプローラで表示させると、キチンとB列〜D列のデータ が表示されます。
以上、今回は、たった一箇所の変更で遊んでみましたが、phpという言語で、 エクセルのデータが自由に扱える、ということが多少?は実感できたのではな いかと思います。 さて、ここのまま続けると、少々長くなりそうなので、次回は今回の続きとし て、非常に便利な使い方と、コストダウンのことについてお話しする予定です。
42歳のオヤジでもできた!パソコンサーバー化計画 (マガジンID:0000114576)
Powered by