セルにデータを書き込む(write)

広告

ワークシートの中に含まれるセルに対して行と列を指定してデータを書き込む方法を確認します。セルにデータを書き込むにはSpreadsheet_Excel_Writer_Worksheetクラスで用意されているwriteメソッドを使います。

受け取った内容に応じて、適切な書き込みメソッドを呼び出します。

パラメータ:
  $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();
?>

サンプルプログラム

では簡単なサンプルで試してみます。

sample6-1.php

<?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サーバのドキュメントルート以下に設置しブラウザからアクセスすると次のように表示されます。

セルにデータを書き込む(write)

作成されたExcelファイルへのリンクが表示されます。リンクからExcelファイルをローカルに保存しExcelで開いて下さい。

セルにデータを書き込む(write)

ワークシート内のセルに文字列、数値、計算式が書き込まれていることが確認できます。

( Written by Tatsuo Ikura )