Spreadsheet_Excel_Writer は、 COM コンポーネントを必要とせずに Excel ファイルを作成するためのツールです。 Spreadsheet_Excel_Writer の現行版によって生成されたファイルは、 Excel5(BIFF5) フォーマットに相当します。 したがって、そのバージョンのエクセルの持つ機能はすべて使用可能です (ただし、それ以降のバージョンの新機能は利用できません)。
Spreadsheet_Excel_Writer の一般的な使用法は、 膨大な (あるいはそれほどでもない) 量の情報をスプレッドシート形式に まとめ、そこらじゅうにあふれている Excel (あるいは OpenOffice) のような表計算プログラムで処理しやすくすることです。
それでは、実際どのように使用するのかを見てみましょう。
典型的な使用法
<?php
require_once 'Spreadsheet/Excel/Writer.php';
// ワークブックを作成します
$workbook = new Spreadsheet_Excel_Writer();
// HTTP ヘッダを送信します
$workbook->send('test.xls');
// ワークシートを作成します
$worksheet =& $workbook->addWorksheet('My first worksheet');
// データを書き込みます
$worksheet->write(0, 0, 'Name');
$worksheet->write(0, 1, 'Age');
$worksheet->write(1, 0, 'John Smith');
$worksheet->write(1, 1, 30);
$worksheet->write(2, 0, 'Johann Schmidt');
$worksheet->write(2, 1, 31);
$worksheet->write(3, 0, 'Juan Herrera');
$worksheet->write(3, 1, 32);
// ファイルを送信します
$workbook->close();
?>
ワークシートの前に、まずワークブックを作成したということに注意しましょう。 ワークシートはすべてワークブック内に含まれています。 また、ひとつのワークブックの中には複数のワークシートが含まれているかもしれません。
Spreadsheet_Excel_Writer を使用するプログラムを 書く際に注意すべき点がもうひとつあります。それは、ワークシートを 作成する際にアンパサンド符号 (&) を使用するということです。 アンパサンドは、ワークシートオブジェクトをコピーするのではなく その参照を使用するということを意味します。もし何のことだか さっぱりわからないとしても心配することはありません。 ワークシートを作成するために addWorksheet() をコールしたり 書式設定を作成するために addFormat() をコールしたりする際には必ずアンパサンドを使用する、とだけ 覚えておきましょう。
さらに次の行が気になる人もいるでしょう。
これは、ブラウザにスプレッドシートを送信しているということを意味します。 単にスプレッドシートをマシン上に保存したいだけの場合には どうすればいいのでしょうか。そのためには、単にごの行を省略し、 その代わりに有効なファイルパスをワークブックのコンストラクタに 与えればよいのです。
たとえば、さきほどの例で作成したスプレッドシートを 'test.xls' という名前で保存したければ、以下のように記述します。
ファイルへの保存
<?php
require_once 'Spreadsheet/Excel/Writer.php';
// ファイルへのパスをここで指定します
$workbook = new Spreadsheet_Excel_Writer('test.xls');
$worksheet =& $workbook->addWorksheet('My first worksheet');
$worksheet->write(0, 0, 'Name');
$worksheet->write(0, 1, 'Age');
$worksheet->write(1, 0, 'John Smith');
$worksheet->write(1, 1, 30);
$worksheet->write(2, 0, 'Johann Schmidt');
$worksheet->write(2, 1, 31);
$worksheet->write(3, 0, 'Juan Herrera');
$worksheet->write(3, 1, 32);
// この場合でも、ワークブックを明示的に閉じる必要があります
$workbook->close();
?>
Spreadsheet_Excel_Writer の書式設定 (フォント・セルの色・文字の配置など) に関して学習したければ、 ここでフォーマット教本をチェックすることができます。