[PHP-users 27970] Re: PHPからExcel出力について質問です

TAKAGI Masahiro matakagi @ osk2.3web.ne.jp
2005年 12月 31日 (土) 03:37:49 JST


高木です。

At Thu, 29 Dec 2005 09:48:59 +0900,
H.Kom wrote:
> 
> PHPからのExcel出力を行う為に、「Spreadsheet Excel Writer」
> http://www.phpclasses.org/browse.html/package/767.html
> を利用しています。
> 
> 出力等は問題無く出来ていますが、一点だけ思い通りにならない部分があります。
> それは「印刷タイトルの指定が出来ない」ことです。
> 
> Worksheet.php中の関数「repeat_rows」及び「repeat_columns」が該当する機能
> ではないかと思うのですが、これらを使っても印刷タイトルが設定されません。
> 
PHP Classes 版のアーカイブに付属している test.php を参考にして以下のよ
うなサンプルを書いてみましたが、私の環境では特に問題なく設定できている
ようです。
(PHP 5.0.4 on Linux, Microsoft Excel 2002, OpenOffice.org 2.0.0 で確認)

・どのようにプログラムを書いてみたのか
・そのプログラムがどのように動いてほしかったのか
・実際はどのように動いてしまったのか (あるいはどのようなエラーが出たの
 か)

などがわかれば、もう少し的確なアドバイスができるかもしれません。

<?php
require_once('Worksheet.php');
require_once('Workbook.php');

function sendHeader($filename) {
    header("Content-type: application/vnd.ms-excel");
    header("Content-Disposition: attachment; filename=\"$filename\"");
    header("Expires: 0");
    header("Cache-Control: must-revalidate,
    post-check=0,pre-check=0");
    header("Pragma: public");
}

$workbook = new Workbook('-');
$worksheet =& $workbook->add_worksheet('テスト');
$worksheet->write_string(0, 0, 'この行を印刷タイトルにします');
$worksheet->repeat_rows(0, 1); // 最初の 2 行を印刷タイトルにします

for ($i=2; $i<=200; $i++) {
    $worksheet->write_string($i, 0, 'テスト文字列' . $i);
}

sendHeader('test.xls');
$workbook->close();
?>

> Spreadsheet Excel Write自体が現在ではどうやら更新されておらず、使ってい
> る方が少ないように思えますが、どなたか情報等お持ちの方はいらっしゃいます
> でしょうか?
> 
望月さんがおっしゃられているように、現在は別の場所で開発が続けられてい
ます。特別な理由があるのでない限り、PEAR バージョンを使用されることを
お勧めします。ちなみに、上のサンプルを PEAR 版で書き直すと以下のように
なります。

<?php
require_once('Spreadsheet/Excel/Writer.php');

$workbook = new Spreadsheet_Excel_Writer();
$worksheet =& $workbook->addWorksheet('テスト');
$worksheet->writeString(0, 0, 'この行を印刷タイトルにします');
$worksheet->repeatRows(0, 1); // 最初の 2 行を印刷タイトルにします

for ($i=2; $i<=200; $i++) {
    $worksheet->writeString($i, 0, 'テスト文字列' . $i);
}

$workbook->send('test.xls');
$workbook->close();
?>

-- 
高木 正弘 mailto:matakagi @ osk2.3web.ne.jp


PHP-users メーリングリストの案内