セルに数式を書き込む(writeFormula)

広告

セルに数式を書き込む方法を確認します。(「writeメソッドもご確認下さい)。

セルに数式を書き込むにはSpreadsheet_Excel_Writer_Worksheetクラスで用意されているwriteFormulaメソッドを使います。

指定した行・列 (ゼロから数える) に数式を書き込みます。エラーが発生した場
合は、(数式の代わりに) エラーメッセージを そのセルに書き込みます。

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

サンプルプログラム

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

sample10-1.php

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

セルに数式を書き込む(writeFormula)

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

セルに数式を書き込む(writeFormula)

( Written by Tatsuo Ikura )