PHP エクスポート CSV ファイル、_PHP チュートリアル

WBOY
リリース: 2016-07-13 09:58:13
オリジナル
848 人が閲覧しました

PHP は CSV ファイルをエクスポートします、

転載: 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('名前', '性別', '年齢', 'メール', '電話番号', '...');


foreach ($head as $i => $ v) {


// CSV Excel は GBK エンコードをサポートしています、変換する必要があります、変換しないと文字化けします


$head[$i] = iconv('utf-8', ' gbk', $v);


}


// fputcsvを通してファイルハンドルにデータを書き込む


fputcsv($fp, $head);


// カウンタ


$cnt = 0;


// $limit row ごとに、大きすぎず小さすぎずに出力バッファをリフレッシュします


$limit = 100000;


// メモリを無駄にせずに一行ずつデータをフェッチします


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);


}

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/979002.html技術記事 PHP は CSV ファイルをエクスポートします。再掲: http://blog.csdn.net/huyanping/article/details/7068356 私たちは、次のようなオープン ソース ライブラリを使用して、データベースから Excel ファイルにデータをエクスポートする必要に遭遇することがよくあります。
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート