[PHP-users 4132] Re: phpでvbscript を動かした方いらっしゃいますか?
玉川 竜司
php-users@php.gr.jp
Wed, 5 Dec 2001 02:23:02 +0900
玉川@stsです。ちょびっとやってみました。
*******ここから
<?
$xl=new COM("Excel.Application");
$xl->Visible=1;
$ws=$xl->Workbooks->Add();
$s=$xl->ActiveSheet;
$c=$s->Cells[1][1];
$c->Value=100;
$s->SaveAs( $DOCUMENT_ROOT . "/test.xls");
$xl->Quit();
unset($xl);
?>
<A HREF="test.xls">エクセルのファイル</A>
*******ここまで
これで、サーバー内でExcelのファイルが生成され、表示された
リンクをクリックするとIEのウィンドウ内で直接Excelがアクティ
ベーションされます。もちろん、この方法にもいろいろな長所
短所がありますが、一つの手法としてご参考になればと思います。
Visible=1はもちろん不要ですが、動いているのが見えるのも
楽しいかなと(^^;
まあ、みなさん書かれているようにいろんなやり方があると思います。
クライアントサイドからexcelのマクロを使ってURL指定でPHPの生成
したhtmlを読み込むってのも便利な手だと思います(Mashikiさんが
指摘されている方法ですね)。
ちなみに、上の方法でやるときはCGIでPHPを使っていないとおかしな
ことになります。どうも、Excelを起動したプロセスが生きていると、
Excelのプロセスが終了しないみたいで、DLLのほうのPHPではどうも
あんばいがよくありません。マニュアルではRelease()すればいいみた
いに書いてあるんですが、なんか「そんなメンバー関数はありません」
って言われるんですよねぇ。
新しいマニュアルでは、COMオブジェクトのリファレンス・カウントを
明示的に増減できる関数がPHP4.1から追加されるみたいなので、もっと
うまく使えるようになっていくのかも知れませんね。