ホーム DoRuby PHP+PEARでデータをExcelファイルに出力する。 Spreadsheet_Excel_Writer Plugin編

PHP+PEARでデータをExcelファイルに出力する。 Spreadsheet_Excel_Writer Plugin編

この記事はアピリッツの技術ブログ「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形式でデータ出力したい場合には試してみてはいかがでしょうか?

記事を共有

最近人気な記事