[PEAR] Spreadsheet_Excel_Writerを使ってセルの表示形式を「文字列」に設定する方法

Market Research Excel Templates
Creative Commons License photo credit: Ivan Walsh

Spreadsheet_Excel_Writerのマニュアルにやり方が載っていなかったのでメモ。

実現したいこと

PHPからExcelファイルを生成することができるPEARライブラリ「Spreadsheet_Excel_Writer」。

各セルの値だけではなく書式も色々と設定できるのですが、セルの表示形式を「文字列」に設定する方法がわからずに困っていました。

セルの表示形式に「文字列」が設定されている状態。これを実現したい。

実現方法

これを実現するためには、Format::setNumFormatメソッドを使います。名前だけ見ると数値のフォーマットを設定するためのメソッドのように見えますが、どうやらセルの表示形式全般を設定するためのメソッドのようです。

ただ、マニュアルには表示形式を「文字列」に設定する方法が書かれていません。困った困った。

少し調べたところ、フォーマットを指定するための引数に「@(アットマーク)」を渡してあげることで、セルの表示形式が「文字列」に設定できることがわかりました。以下がサンプルコード。

 <?php
require_once 'Spreadsheet/Excel/Writer.php';

$workbook = new Spreadsheet_Excel_Writer();
$worksheet =& $workbook->addWorksheet();

// フォーマットの作成
$format_string =& $workbook->addFormat();
$format_string->setNumFormat('@'); // 表示形式を「文字列」に

// セルの値・フォーマットの設定
$worksheet->write(0, 0, "表示形式を「文字列」に設定できたよ。", $format_string); 

$workbook->send('sample.xls');
$workbook->close();
?> 

まとめ

これで、なんとか無事に表示形式が「文字列」に設定されたExcelファイルが出力できました。迷宮入りしなくてすんで本当によかったー!

文字列以外にもマニュアルに設定方法が載っていない表示形式がいくつかあります。それらの設定方法を知りたい場合は、以下のドキュメントの「5.49 FORMAT」(174〜175ページ)を読んでみると答えが見つかるかもしれません。(掲載されている表の「Format String」カラムを参照してください。)

それでは!