[PHP-users 9632] EXCELへの出力
斎藤
php-users@php.gr.jp
Thu, 29 Aug 2002 21:10:40 +0900
はじめまして、齋藤です。
COM関数を使用して、サーバ側でEXCELファイルを作成したいのですが、
サーバ側でEXCELファイルを作成しようとすると途中で失敗し、
EXCELのプロセスも残ったままになってしまいます。
この時、ブラウザには下記のエラーメッセージが表示されます。
Fatal error: Maximum execution time of 30 seconds exceeded in c:\home\saitou\excel.php on line 25
PHPでCOMの使い方が悪いのでしょうか。
それとも、何か設定が必要なのでしょうか。
【スクリプト】は、
test.php(長いので関係ないと思われるところは削りました)
<?
require("excel.php");
$excel_handle = new excel;
$excel_handle->tsuika();
・・・・・・・
$excel_handle->write(1, 1, "会員No");
$excel_handle->write(1, 2, "会員名");
・・・・・・・
while(odbc_fetch_row($MyResult))
{
・・・・・・・・・・
$excel_handle->write(1, $cnt*2+3, $A);
$excel_handle->write(1, $cnt*2+4, $A);
・・・・・・・・・・
}
・・・・・・・・・
$excel_handle->write(1, $cnt*2+3, "残数");
$excel_handle->write(1, $cnt*2+4, "残数");
・・・・・・・・・
$excel_handle->write(2, 1, "会員No");
$excel_handle->write(2, 2, "会員名");
・・・・・・・・・
while($cnt2 >= 0)
{
・・・・・・・・・
$excel_handle->write(2, $cnt2*2+3, "誕生日");
$excel_handle->write(2, $cnt2*2+4, "セレクト");
・・・・・・・・・
}
・・・・・・・・・
while(odbc_fetch_row($MyResult))
{
・・・・・・・
$excel_handle->write($cnt2, 1, $No);
$excel_handle->write($cnt2, 2, $Name);
・・・・・・・
for( $i = 0; $i < $cnt; $i++ ) {
・・・・・・・・
$excel_handle->write($cnt2, $i*2+3, $Cake1[$Year[$i]]);
$excel_handle->write($cnt2, $i*2+4, $Cake2[$Year[$i]]);
}
・・・・・・・・
}
$excel_handle->save("C:\\home\\saitou\\Cake1.xls");
$excel_handle->close();
unset($excel_handle);
?>
excel.php
<?
class excel {
var $excel;
var $wkb;
var $sheets;
function excel() {
$this->excel = new COM("excel.application") or die("コンポーネントEXCELの呼び出しに失敗しました");
}
//新規作成
function tsuika() {
$this->wkb = $this->excel->application->workbooks->add();
$this->sheets = $this->wkb->Worksheets("sheet1");
$this->excel->application->DisplayAlerts ="False";
$this->excel->application->Visible = true;
}
//書き込み
function write($row,$col,$res) {
$this->sheets->activate;
$dainyuu = $this->sheets->cells($row,$col);
$dainyuu->activate;
$dainyuu->value = $res;
}
//保存
function save($hozon) {
$this->wkb->Saved = true;
$this->wkb->SaveAs($hozon);
}
//クローズ
function close() {
$this->wkb->close();
$this->excel->Quit();
unset($this->excel);
}
}
?>
【動作環境】は、
Windows2000 Pro sp2
Apache 1.3.26
PHP 4.1.2(CGIで動作)
IE 6.0
よろしくお願いします。