[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から追加されるみたいなので、もっと
うまく使えるようになっていくのかも知れませんね。