PHP エクスポート CSV ファイル

WBOY
リリース: 2016-08-08 09:26:41
オリジナル
1131 人が閲覧しました

転載: http://blog.csdn.net/huyanping/article/details/7068356

データベースから Excel ファイルにデータをエクスポートする必要がある場合は、PHPExcel などのオープン ソース ライブラリを使用する方が確かに簡単ですが、大量のデータのサポートが非常に不十分であり、簡単にエクスポートできません。 PHP のメモリ使用量の上限に達しました。 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');
// メモリを節約するために、データをメモリに読み込まないでください。一度、ハンドルから 一行ずつ読むだけです
$sql = 'select * from tbl where...';
$stmt = $db->query($sql);
// PHPファイルハンドルphpを開きます://outputは直接出力という意味です ブラウザに移動します
$fp = fopen('php://output', 'a');
// Excelの列名情報を出力します
$head = array('Name', 'Gender ', '年齢', 'メール ', '電話番号', '...');
foreach ($head as $i => $v) {
// 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 ++;
if ($limit == $cnt) { //データ量が多すぎることによる問題を防ぐために出力バッファをリフレッシュします
ob_flush ();
flush();
$cnt = 0;
}
foreach ($row as $i => $v) {
$row[$i] = iconv('utf-8', 'gbk' , $v);
}
fputcsv($fp, $row);
}

上記は、PHP での CSV ファイルのエクスポートを内容も含めて紹介しました。PHP チュートリアルに興味のある友人に役立つことを願っています。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート