- ベストアンサー
CSVをダウンロードさせた際、CSV側(EXCEL側)の書式が数値になってしまう
環境:Apache2&PHP5&MySQL5&Excel2003 SQLからCSVをダウンロードさせた際、CSV側(EXCEL側)の書式が、 「数値」で設定され、化けてしまいます。 例:1E+18、1E+18、1E+18 MySQL側ではVARCHAR(50)で、はいっているデータはすべて数字です。 (例:01000000002) CSVをEXCELで開き、セルの書式設定で「数値」に変えてやると 上記例(例:01000000002)の頭の0がなくなります。 ご経験のある方、参考サイト等教えていただけると幸いです。 ご参考までに、下記がソースです。 (5行目のconnection.phpでDBに接続しコードはSJISにしてあります) <?php header("Content-Type: application/octet-stream"); ?> <?php header("Content-Disposition: attachment; filename=output.csv"); ?> <?php include_once('connection.php'); $sql="select s.branchname,r.date,s.r.judgment,stuname,branchcode,s.syainid,r.branch,r.maxpercent from m_student s" . " left outer join (select r1.stuid,max(r1.date) date,r1.percent maxpercent,r1.judgment,r1.branch from result r1" . " where r1.percent in (select max(r2.percent) from result r2 where r2.stuid=r1.stuid) group by r1.stuid,r1.percent) r on r.stuid=s.stuid"; $rs=mysql_query($sql); for($i=0; $i<mysql_num_fields($rs); $i++){ print (mb_convert_encoding(mysql_field_name($rs,$i),"SJIS").","); //print $rs; } print("\n"); for($j=0 ;$j<mysql_num_rows($rs); $j++) { for($k=0; $k<mysql_num_fields($rs); $k++) { $str=mysql_result($rs,$j,$k); print (mb_convert_encoding($str,"SJIS").","); //print $str; } print("\n"); } ?>
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (2)
- ann_dv
- ベストアンサー率43% (528/1223)
- hana-hana3
- ベストアンサー率31% (4940/15541)
お礼
お礼が遅くなりすいません。 >Excelに数値扱いされそうな文字列を文字列として渡すためには、出 >力時に="01000000002"というふうに引用符と等号をくっつけてやる >手口が使えます。引用符だけだと無視されます。CSVの仕様からは逸 >脱した、Excel独特の記法ですので注意して下さい。 この方法使いって見ます。