4
<?php

$filename="backup_".date('m/d/Y', time()).".csv";

header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment;filename="'.$filename.'"');
header('Cache-Control: max-age=0');

$q=mysqli_query($conn,"SELECT * FROM visitordb");
$file = fopen('php://output','w');
if(mysqli_num_rows($q)>0) {
    while($res = $q->fetch_assoc()) {
        $datas = $res["sno"].','.$res["UDID"].','.$res["taggnumber"].','.$res["name"].','.$res["designation"].','.$res["company"].','.$res["email"];
        fputcsv($file, explode(',', $datas));
    }
} else {

}

fclose($file);
}

上記のコードは、ms Excel で表示すると、.csv ファイルの先頭に空の行が生成されます。もう 1 つ、.csv ファイルはページ内の HTML コードも生成します。

4

1 に答える 1

6

ヘッダー ディレクティブを削除するとどうなりますか? ヘッダーは定義上、改行で終了することを知っておく必要があります。これは \n 対 \r\n の競合であると想像できます。

すべてが失敗した場合は、出力全体をバッファに取得し、後でトリミングします。

ob_start();
...your code...
$out = ob_get_contents();
ob_end_clean();
echo trim($out);

よろしくお願いします

ゾルト

于 2013-05-17T16:21:21.983 に答える