首頁  >  文章  >  後端開發  >  PHP匯出CSV文件

PHP匯出CSV文件

WBOY
WBOY原創
2016-08-08 09:26:411129瀏覽

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

常常碰到需要從資料庫匯出資料到Excel文件,用一些開源的類別庫,例如PHPExcel,確實比較容易實現,但對大量資料的支援很不好,很容易到達PHP記憶體使用上限。這裡的方法是利用fputcsv寫CSV檔案的方法,直接向瀏覽器輸出Excel檔案。
   
  // 輸出Excel檔案頭,可把user.csv換成你要的檔案名稱
  header('Content-Type: application/vnd.ms-file'); ="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('姓名', '性別', '年齡', 'Email' , '電話', '…');
  foreach ($head as $i => $v) {
  // CSV的Excel支援GBK編碼,一定要轉換,否則亂碼
  $head[$i] = iconv ('utf-8', 'gbk', $v);
  }
  // 將資料透過fputcsv寫到檔案句柄
  fputcsv($fp, $head);  〟〟〜〟〜/ 〜〜 〟〜〟〜〟〟〜〟〟〜/ 〟〜 〜〟〜); / 每隔$limit行,刷新一下輸出buffer,不要太大,也不要太小
  $limit = 100000;
  // 逐行取出數據,不浪費內存
  while ($row = $stmt->Dfetch(Zend_end_D ::FETCH_NUM)) {
  $cnt ++;
  if ($limit == $cnt) { //刷新一下輸出buffer,防止由於資料過多造成問題
  ob_flush();$
 〦〜(); = 0;
  }
  foreach ($row as $i => $v) {
  $row[$i] = iconv('utf-8', 'gbk', $v);
 , $row);
  } 

以上就介紹了PHP匯出CSV文件,包含了方面的內容,希望對PHP教學有興趣的朋友有幫助。


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn