私は、以下の機能をいくつかのmysqlデータを取得し、CSV/Excelとしてダウンロードするはずの場所にオンラインで見つけました。それは仕事の一種ですが、ユーザーのブラウザでファイルをダウンロードする代わりに、データを応答ストリームの最後にダンプし、他のすべてのページの内容がブラウザウィンドウの一番下に表示されます。私は間違って何をしていますか?ダウンロードCSVは単にページレスポンスでCSVコンテンツを出力します
重要:ExcelのコンテンツタイプをCSVに変更しても、それは違いはなく、技術的には実際にはExcelコンテンツではありませんが、同じ結果が得られます。
function DownloadQueryToCSV($sql, $filename){
$result = mysql_query($sql) or die("Couldn't execute query:<br>" . mysql_error(). "<br>" . mysql_errno());
$file_ending = "xls";
header("Content-Type: application/xls");
header("Content-Disposition: attachment; filename=$filename.xls");
header("Pragma: no-cache");
header("Expires: 0");
$sep = "\t"; //tabbed character
for ($i = 0; $i < mysql_num_fields($result); $i++) {
echo mysql_field_name($result,$i) . "\t";
}
print("\n");
while($row = mysql_fetch_row($result))
{
$schema_insert = "";
for($j=0; $j<mysql_num_fields($result);$j++)
{
if(!isset($row[$j]))
$schema_insert .= "NULL".$sep;
elseif ($row[$j] != "")
$schema_insert .= "$row[$j]".$sep;
else
$schema_insert .= "".$sep;
}
$schema_insert = str_replace($sep."$", "", $schema_insert);
$schema_insert = preg_replace("/\r\n|\n\r|\n|\r/", " ", $schema_insert);
$schema_insert .= "\t";
print(trim($schema_insert));
print "\n";
}
die(); // WARNING: Must die at end of function, else other page contents will end up in spreadsheet!!
}
司会:これは、Excelとは何の関係もない、とmysql to excel formatting issues
'mysql'は廃止予定です。 PHPのバージョン5.5から削除する –
[mysqlをフォーマットする問題を解決するためにmysqlを複製する](https://stackoverflow.com/questions/22580848/mysql-to-excel-formatting-issues) –
rtfmと "ヘッダー呼び出しを書き込む "?ありがとう。 – HerrimanCoder