[PHP-users 21904]Re: データベース上のExcelをダウンロード

Y.Watanabe yuw @ msj.biglobe.ne.jp
2004年 5月 31日 (月) 16:59:05 JST


渡辺です。

"Kuma" wrote on 2004/05/31 16:28
with Subject: [PHP-users 21903] Re: データベース上のExcelをダウンロード

>> というか、よく見てみると、
>> 
>> >header("Content-Transfer-Encoding: base64");
>> 
>> この行って必要ないような気がしないでもない・・・。
>> コメントアウトしてみては?
>
>以下の内容で書き直しました.
><?php
>$con = mssql_connect("db_server","sa","hogehoge");
>mssql_select_db("db_name",$con);
>$str = "select * ";
>$str = $str . "from hoge ";
>$str = $str . "where obj_id = 12345";
>$rs = mssql_query($str);
>header("Content-type: application/vnd.ms-excel");
>header("Content-Disposition: attachment;filename=test.xls");
>
>echo mssql_result($rs,0,"excel_obj")
>?>
>
>エラーメッセージは,
>「test[1].xls ファイル形式が正しくありません」と出ます.
>
>やはり,エンコード関連の問題でしょうか.
>今,「バイナリ,base64」等をキーにして,Googleで調べています.


# base64である必要性がよくわからない・・・。

んじゃこれでは?

    header("Content-Type: application/ms-excel");
    header("Content-Disposition: attachment; filename=test.xls");
    header("Content-Transfer-Encoding: binary");

あと、

>echo mssql_result($rs,0,"excel_obj")

の直後にexit();でも入れて万が一余計なモノが
後から出て行かないようにしてみるとか。


それ以前に、

$fp = fopen("/tmp/hoge.xls","wb");
fwrite($fp,mssql_result($rs,0,"excel_obj"));
fclose($fp);

とかしてみてサーバー上にファイルとして保存し、
そのファイルが本当にまともにExcelで開けるかどうか確認するべきでは?



PHP-users メーリングリストの案内