Do You PHP?    
Search Engine Optimization  php5 powerd  Valid XHTML 1.0!  Valid CSS!  このサイトのはてなブックマーク数 



last updated
2004/03/11

counter hits
since 1999/11/06


Excelファイル形式でのデータダウンロード(PEAR版)

alertここにある情報はかなり古くなっており、正しくなくなっている可能性があります。掲載しているサンプルコードiなどは、最新のPHPでは動作しない、もしくは、別途設定・調整が必要になるかも知れません。情報を鵜呑みにせず、あなたの手を動かして、あなたの目で確認してください。

zip形式 tgz形式

先日、PHP ClassesのSpreadsheet_WriteExcelクラスを使ってExcel形式でデータをダウンロードさせるサンプルを作ってみましたが、今度はPEAR版を使って同じものを作ってみました。

セットアップ手順ですが、上記のページからSpreadsheet_Excel_Writer-0.3.tgzを適当なディレクトリにダウンロードします。そして、以下のようにpearコマンドを実行するだけで完了です。

●Spreadsheet_Excel_Writerのインストール
$ pear install Spreadsheet_Excel_Writer-0.3.tgz
install ok: Spreadsheet_Excel_Writer 0.3
$ 

さて、サンプルスクリプトの方ですが。。。PHP Classes版と変わりませんね(^-^;

ざっと見た&使った感じ、

  • 新たにSpreadsheet_Excel_Writerクラス(Writer.phpで定義。Spreadsheet_Excel_Writer_Workbookクラスを継承)が追加されていて、PHP Classes版のWorkbookクラスの代わりにインスタンス化する
  • メソッド名がPHP Classes版のようにアンダースコアで区切られていない
  • 作成したExcelファイルデータの出力は、Spreadsheet_Excel_Writerクラスのsendメソッドで行う

あたりに気を付ければ大丈夫と思います。

フォントの変更ですが、2003/06/05現在、PEAR版でもアクセサは用意されていません。PHP Classes版と同様、Format.phpで定義されているSpreadsheet_Excel_Writer_Formatクラスのメンバー変数「$_font_name」にフォント名を直接代入します。

cautionPHP Classes版と変数名が違うので注意が必要です(PHP Classes版は「$font」)

memo[2004/03/11] 2004/03/11現在の最新版であるバージョン0.7で確認したところ、FormatクラスにsetFontFamilyメソッドが用意されていました

●PHPスクリプトの一部

<?php
               :

    /**
     * ワークブックの作成。
     */
    $workbook = new Spreadsheet_Excel_Writer();

    /**
     * ワークシートの追加
     */
    $worksheet =& $workbook->addWorksheet($tablename);

               :

    /**
     * データヘッダの出力
     */
    $format =& $workbook->addFormat();
    $format->_font_name = mb_convert_encoding("MS ゴシック", "shift_jis");

               :

    /**
     * データの出力
     * PHPスクリプトがshift_jisでない場合、日本語はshift_jisに変換
     * する必要がある
     */
    while(OCIFetch($stmt)) {
        $excelrow++;
        for ( $i = 1; $i <= $ncols; $i++ ) {
            $worksheet->write(
                $excelrow, ($i - 1),
                mb_convert_encoding(
                    OCIResult($stmt, OCIColumnName($stmt,$i)), "shift_jis"));
        }
    }

               :

    /**
     * Excelファイルデータを出力
     */
    $workbook->send($filename);

    /**
     * Excelオブジェクトの後始末
     */
    $workbook->close();
?>



About This Site |  Privacy Policy |  Contact
Copyright © 1999 - 2004 by Hideyuki SHIMOOKA all rights reserved.