セルに数式を書き込む(writeFormula)
セルに数式を書き込む方法を確認します。(「writeメソッドもご確認下さい)。
セルに数式を書き込むにはSpreadsheet_Excel_Writer_Worksheetクラスで用意されているwriteFormulaメソッドを使います。
integer writeFormula(integer $row, integer $col, string $formula [, mixed $format=0])
指定した行・列 (ゼロから数える) に数式を書き込みます。エラーが発生した場 合は、(数式の代わりに) エラーメッセージを そのセルに書き込みます。 パラメータ: $row 書き込み先の行 $col 書き込み先の列 $formula 数式を表す文字列 $format セルに適用する書式 戻り値: 正常に終了した場合は 0、数式にエラーがあった場合は -1、行や列が範囲を 超えている場合に -2 を返します。
1番目と2番目の引数で対象となるセルの行番号と列番号を指定します。3番目の引数でセルに書き込む数値を指定します。
数式の指定には等号(=)で始まる必要があります。また関数に渡す引数はセミコロン(;)ではなくカンマ(,)で区切りる必要があります(通常は区切り文字にカンマを使っていますが、設定によってセミコロンを使われている場合もあるためです)。
実際には次のように記述します。
<?php require_once("Spreadsheet/Excel/Writer.php"); $workbook = new Spreadsheet_Excel_Writer(); $workbook->send('sample1-1.xls'); $worksheet =& $workbook->addWorksheet('シート1'); $worksheet->writeNumber(0, 0, 35); $worksheet->writeNumber(0, 1, 72); $worksheet->writeFormula(0, 2, '=SUM(A1:B1)'); $workbook->close(); ?>
サンプルプログラム
では簡単なサンプルで試してみます。
<?php require_once("Spreadsheet/Excel/Writer.php"); $workbook = new Spreadsheet_Excel_Writer('./sheet/sample10-1.xls'); $worksheet =& $workbook->addWorksheet('シート1'); $worksheet->writeNumber(0, 0, 35); $worksheet->writeNumber(0, 1, 45); $worksheet->writeFormula(0, 2, '=SUM(A1:B1)'); $worksheet->writeNumber(1, 0, 58); $worksheet->writeNumber(1, 1, 38); $worksheet->writeFormula(1, 2, '=AVERAGE(A2:B2)'); $worksheet->writeNumber(2, 0, 85); $worksheet->writeNumber(2, 1, 78); $worksheet->writeFormula(2, 2, '=(A3+B3)/2'); $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/sample10-1.xls">Excelファイル</a></p>'); print('</body></html>'); ?>
上記のファイルをWWWサーバのドキュメントルート以下に設置しブラウザからアクセスすると次のように表示されます。
作成されたExcelファイルへのリンクが表示されます。リンクからExcelファイルをローカルに保存しExcelで開いて下さい。
( Written by Tatsuo Ikura )