この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。
こんにちは、KBMJの中平@PHPエンジニアです。
*最近はPHPで開発を行っていますのでPHPのプラグインについて紹介します。
今回紹はPHPでデータをExcelファイルに出力する方法ついて書きます。
よく、Webシステムでデータをファイルに出力する際にはCSV形式で出してしまう事が多いと思いますが、
CSV データをExcelで開くと、「001234」というデータの場合、頭ゼロが消されてしまい「1234」と数値として表示されてしまう事があるため、CSVではなくExcel形式で出力させてほしいという要望はないでしょうか?
そこで、今回はPHPで簡単にデータをExcelファイルとして出力することができる、Spreadsheet_Excel_WriterというPEARのpluginの使い方について書こうと思います。
環境
OS : Windows Vista
PHP : 5.1.6
PEARを利用します。
Spreadsheet_Excel_Writerのインストール
//Spreadsheet_Excel_Writerはbeta版なので、
beta版をインストールさせるための設定を行う。
pear config-set preferred_state beta
インストールpear install Spreadsheet_Excel_Writer-0.9.2
Spreadsheet_Excel_WriterのExcel出力のサンプルコード
require_once ‘Spreadsheet/Excel/Writer.php’;
class excele_writer
{
$workbook = new Spreadsheet_Excel_Writer();
$file_name=’sample.xls’;
$tablename = sprintf(“establishment_entry_%s”, date(“Ymd”));
$worksheet =& $workbook->addWorksheet($tablename);
$format =& $workbook->addFormat();
//excelのフォントを指定 MS UI Gothic
$format->_font_name = mb_convert_encoding(“MS UI Gothic”, “shift_jis”);
$worksheet->writeString(0,0,mb_convert_encoding(‘hogehoge’,”SJIS”,”UTF-8″)); // セルに書き込み
$worksheet->writeString(0,1,mb_convert_encoding(‘0123456’,”SJIS”,”UTF-8″)); // セルに書き込み
$workbook->send($file_name);
$workbook->close();
}
説明
mb_convert_encodingはUTF-8の文字コードをSJISに変換しています。
excelでは日本語はSJISでないと文字化けを起こしますので注意!
writeStringの第一引数はエクセルの行、第二引数は列になっています。
writeStringは文字列を書き込むメソッドなので、数値を文字列として書き込むためexcelで開いたときに頭の0が消えません。
複数データを出力する場合はループさせればOK
sendでファイルに出力
closeでファイルを閉じています。
後はブラウザでアクセスすればexcelファイルが出力されます。
また、Spreadsheet_Excel_Writerだとexcel出力方法も細かく設定できます。
セルに色をつけたり、文字サイズの変更、罫線、数値のフォーマット指定、画像貼り付け等excelでできることは大抵できるようです。
詳しくはこちらのマニュアルを参考にしてください。
Spreadsheet_Excel_Writer マニュアル
http://pear.plus-server.net/package.fileformats.spreadsheet-excel-writer.html
このSpreadsheet_Excel_Writerというpluginは簡単に導入できてコードも数行で済みますので、PHPからCSVではなくExcel形式でデータ出力したい場合には試してみてはいかがでしょうか?