PHP超入門 (6)


さて、前回、公表した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列のデータ
が表示されます。


実例はコチラ → http://test3.e-and-a.org/php/061-3.php

以上、今回は、たった一箇所の変更で遊んでみましたが、phpという言語で、
エクセルのデータが自由に扱える、ということが多少?は実感できたのではな
いかと思います。


さて、ここのまま続けると、少々長くなりそうなので、次回は今回の続きとし
て、非常に便利な使い方と、コストダウンのことについてお話しする予定です。
新しく「パソコン(PC)初心者向け パソコンサポートサービス」を始めました。
詳細は専用サイトを御覧ください。

上記の内容はシリーズとしてメールマガジンで配信しています。

42歳のオヤジでもできた!パソコンサーバー化計画 (マガジンID:0000114576)

メールマガジン登録  メールアドレス:
メールマガジン解除  メールアドレス:

Powered by まぐまぐ

copyright(c) 2002-2007 E&A工房 All rights reserved.