セルにデータを書き込む(write)
ワークシートの中に含まれるセルに対して行と列を指定してデータを書き込む方法を確認します。セルにデータを書き込むにはSpreadsheet_Excel_Writer_Worksheetクラスで用意されているwriteメソッドを使います。
void write(integer $row, integer $col, mixed $token [, mixed $format=0])
受け取った内容に応じて、適切な書き込みメソッドを呼び出します。 パラメータ: $row 書き込み先の行 $col 書き込み先の列 $token 書き込みたい内容 $format セルに適用する書式
1番目と2番目の引数で対象となるセルの行番号と列番号を指定します。3番目の引数でセルに書き込むデータを指定します。4番目の引数はセルに適用する書式です。書式については別のページで詳しく確認します。
writeメソッドは3番目の引数で指定した書き込むデータの種類に応じて別途用意された他のメソッドを呼び出します。データの種類と呼び出されるメソッドの対応は次の通りです。
数値 writeNumber 文字列 writeString コメント writeNote 空のセル writeBlank 数式 writeFormula ハイパーリンク writeUrl
writeメソッドは3番目の引数が数式だった場合にはwriteNumberメソッドが呼び出され、数式だった場合にはwriteFormulaメソッドが呼び出されます。
ソースで確認を取ると(1)数値、(2)リンク、(3)計算式、(4)空のセル、(5)文字列、の順で正規表現を使って判定しています。コメントを記述するには別途writeNoteを使う必要がありそうです。またその他のデータの種類についてもwriteメソッドの代わりにそれぞれのメソッドを明示的に使って書き込むこともできます。
実際には次のように記述します。
<?php require_once("Spreadsheet/Excel/Writer.php"); $workbook = new Spreadsheet_Excel_Writer(); $workbook->send('sample1-1.xls'); $worksheet =& $workbook->addWorksheet('シート1'); $worksheet->write(0, 0, 'バナナ'); $worksheet->write(0, 1, 80); $workbook->close(); ?>
サンプルプログラム
では簡単なサンプルで試してみます。
<?php require_once("Spreadsheet/Excel/Writer.php"); $workbook = new Spreadsheet_Excel_Writer('./sheet/sample6-1.xls'); $worksheet =& $workbook->addWorksheet('シート1'); $worksheet->write(0, 0, 'バナナ'); $worksheet->write(0, 1, 80); $worksheet->write(1, 0, 'メロン'); $worksheet->write(1, 1, 350); $worksheet->write(2, 0, '合計'); $worksheet->write(2, 1, '=SUM(B1:B2)'); $workbook->close(); print('<html>'); print('<head>'); print('<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />'); print('</head>'); print('<body>'); print('<p><a href="./sheet/sample6-1.xls">Excelファイル</a></p>'); print('</body></html>'); ?>
上記のファイルをWWWサーバのドキュメントルート以下に設置しブラウザからアクセスすると次のように表示されます。
作成されたExcelファイルへのリンクが表示されます。リンクからExcelファイルをローカルに保存しExcelで開いて下さい。
ワークシート内のセルに文字列、数値、計算式が書き込まれていることが確認できます。
( Written by Tatsuo Ikura )