その他
    ホーム 技術発信 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形式でデータ出力したい場合には試してみてはいかがでしょうか?