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

Kuma satoru_kumagai @ mjs.co.jp
2004年 6月 3日 (木) 15:09:43 JST


先日は,いろいろとご教授いただきまして,ありがとうございます.

その後,いろいろと調べてみました.
SQLServerのimage型のフィールドには,Excelがバイナリ
形式で保存されているということが分かりました.
base64にエンコードなどはしていないようです.

試しにと思い,ASPで同様の事をしてみようと思い,同じサーバの
同じデータを扱って,バイナリデータのダウンロードをさせるコードを
書いてみたら,すんなりとうまくいきました.
(保存データが壊れているということはないようです.)

今現在,以下のリストで試しています.
<?php
mb_http_output("pass");
header("Content-Type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=test.xls");
header("Content-Transfer-Encoding: binary");

$con = mssql_connect("dbserver","sa","");
mssql_select_db("dbname",$con);
$str="select obj_excel ";
$str = $str . "from hoge_table ";
$str = $str . "where obj_id = 12345";
$rs = mssql_query($str);
echo mssql_result($rs,0,"obj_excel");
exit();
?>
ダウンロードしたExcelをエディタで開いてみると,実際のExcelの
セルに入力された数値データや,英数文字が所々に見られます.
Excelで開くと,「読み取り専用,または,サーバ上に保存されている
ドキュメントから応答がありません.」といったエラーが出ます.

postgreSQL,MySQLを使用して,同様の事をやられている方を
検索して見つけましたが,pg_lo_read_all のような関数がMSSQLには
ないので,どのようにすればよいか,まったく分かりません.
先日渡辺様からもご指摘があったように,MSSQLで,SELECTを普通に
実行しただけで,そのようなことが可能なのかどうかが引っかかります.
ASPでは,それようのメソッドや,関数が用意されているところをみると,
もしかするとPHPでは無理なのかなあとも思ってしまいます.

何かご指摘がありましたら,ご教授お願いします.



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