fputcsvを使ってCSVファイルを書き込み、ブラウザに直接Excelファイルを出力する方法です。
コードをコピーします コードは次のとおりです:
// Excel ファイルのヘッダーを出力します。user.csv を必要なファイル名に置き換えることができます
header('Content-Type: application/vnd. ms-excel') ;
header('Content-Disposition:attachment;filename="user.csv"');
//からデータを取得します。データベースを使用してメモリを節約するには、一度にデータをメモリに読み込まず、ハンドルから 1 行ずつ読み込むだけです
$sql = 'select * from tbl where ...';
$stmt = $db-> query($sql);
/ / PHP ファイルハンドルを開きます。php://output はブラウザに直接出力することを意味します
$fp = fopen('php://output', 'a'); Excelの列名情報を出力
$head = array ('Name', 'Gender', 'Age', 'Email', 'Telephone', '...');
foreach ($head as $i => $ v) {
// CSV Excel は GBK をサポートしています エンコーディングを変換する必要があります。変換しないとコードが文字化けします
$head[$i] = iconv('utf-8', 'gbk', $v); / fputcsv を通じてファイル ハンドルにデータを書き込みます
fputcsv($ fp, $head);
// カウンター
$cnt = 0; // $limit 行ごとに、大きすぎないように出力バッファを更新します。 small
$limit = 100000;
// メモリを無駄にせずに 1 行ずつデータをフェッチします
while ($row = $stmt->fetch(Zend_Db::FETCH_NUM)) {
$cnt ++; if ($limit == $cnt) { //データ量が多すぎることによる問題を防ぐために出力バッファをリフレッシュします
$cnt = 0; i => $v) {
$row[$i] = iconv('utf-8', 'gbk', $v);
fputcsv($fp, $row); : シンプルで使いやすく、メモリを非常に節約し、サードパーティのライブラリに依存しません。
http://www.bkjia.com/PHPjc/323705.html
www.bkjia.com
true
http://www.bkjia.com/PHPjc/323705.html
技術記事
fputcsvを使ってCSVファイルを書き込み、ブラウザに直接Excelファイルを出力する方法です。 コードをコピーします。コードは次のとおりです。 // Excel ファイルのヘッダーを出力します。user.csv を必要なファイル名に置き換えることができます。