ホームページ  >  記事  >  バックエンド開発  >  PHP は、mysql データを Excel ファイルにエクスポートするためにオープンソース ライブラリを使用しません

PHP は、mysql データを Excel ファイルにエクスポートするためにオープンソース ライブラリを使用しません

WBOY
WBOYオリジナル
2016-07-25 09:07:111129ブラウズ
  1. // Excel ファイルのヘッダーを出力します。user.csv を必要なファイル名に置き換えることができます
  2. header('Content-Type: application/vnd.ms-excel');
  3. header ( 'Content-Disposition:attachment;filename="user.csv"');
  4. header('Cache-Control:max-age=0');
  5. // メモリを節約するために、データベースからデータを取得します。データは置かないでください メモリを一度に読み取り、ハンドルから 1 行ずつ読み取ります
  6. $sql = 'select * from tbl where...';
  7. $stmt = $db->query($sql);
  8. // PHP ファイルハンドルを開きます。php://output はブラウザに直接出力することを意味します
  9. $fp = fopen('php://output', 'a');
  10. // Excel の列名情報を出力します
  11. $head = array('名前' , '性別', '年齢', 'メール', '電話番号', '...');
  12. foreach ($head as $i => $v) {
  13. // Excel for CSV は GBK エンコードをサポートしています。Convert する必要があります。そうしないと文字化けします
  14. $head[$i] = iconv('utf-8', 'gbk', $v);
  15. }
  16. // データをファイルに書き込みますfputcsv による処理
  17. fputcsv($fp, $head );
  18. //Counter
  19. $cnt = 0;
  20. // $limit 行ごとに、大きすぎず小さすぎずに出力バッファをリフレッシュします
  21. $limit = 100000;
  22. // データを 1 行ずつ取り出します。メモリを無駄にしないでください
  23. while ($row = $stmt->fetch(Zend_Db::FETCH_NUM)) {
  24. $cnt ++;
  25. if ($limit = = $cnt) { //データが多すぎると問題が発生するのを防ぐために出力バッファをリフレッシュします
  26. ob_flush();
  27. flash();
  28. $cnt = 0;
  29. }
  30. foreach ($row as $i => $v ) {
  31. $row[$i] = iconv(' utf-8', 'gbk', $v);
  32. }
  33. fputcsv($fp, $row);
  34. }
コードをコピー

簡単使用してメモリを節約し、サードパーティのライブラリに依存しません。必要な友達は、自分で試してみてください。



声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。