fputcsvを使ってCSVファイルを書き込み、ブラウザに直接Excelファイルを出力する方法です。
コードをコピーします コードは次のとおりです:
// Excel ファイルのヘッダーを出力します。user.csv を必要なファイル名に置き換えることができます
header('Content-Type: application/vnd. ms-excel') ;
header('Content-Disposition:attachment;filename="user.csv"');
header('Cache-Control:max-age=0'); 、メモリを節約するために、一度にデータをメモリに読み込まず、ハンドルから 1 行ずつ読み込むだけです
$sql = 'select * from tbl where ...'; >query($sql);
// PHP ファイルハンドルを開きます。php://output はブラウザに直接出力することを意味します
$fp = fopen('php://output', 'a'); Excelの列名情報
$head = array('名前', '性別', '年齢', 'メールアドレス', '電話番号', '...'); ) {
// CSV Excel は GBK エンコードをサポートしています。変換する必要があります。変換しないと文字化けします
$head[$i] = iconv('utf-8', 'gbk', $v);
}
// データを書き込みますfputcsv によるファイル ハンドル
fputcsv($fp, $head );
// Counter
$cnt = 0; // $limit 行ごとに、大きすぎず小さすぎずに出力バッファを更新します
$limit = 100000 ;
// メモリを無駄にせずに 1 行ずつデータを取り出します
while ($row = $stmt->fetch(Zend_Db::FETCH_NUM)) {
$cnt ++ ($limit == $cnt) { //過剰なデータによる問題の発生を防ぐために出力バッファを更新します
ob_flush();
$cnt = 0;
foreach ($row as $i => $v) {
$row[ $i] = iconv('utf-8' , 'gbk', $v);
}
fputcsv($fp, $row)
利点: シンプルで使いやすく、非常にメモリを節約します。サードパーティのライブラリに依存しません。
上記では、Excel2010 公式ダウンロードの無料完全版を含め、PHP で MySQL データを Excel ファイル fputcsv にエクスポートする方法を紹介しました。PHP チュートリアルに興味のある友人に役立つことを願っています。