經常會碰到需要從資料庫中匯出資料到excel檔案,用一些開源的類庫,比如phpexcel,確實比較容易實現,但對大量資料的支援很不好,很容易到達php記憶體使用上限。這裡的方法是利用fputcsv寫csv檔案的方法,直接向瀏覽器輸出excel檔案。
// 輸出excel檔案頭,可把user.csv換成你要的檔名
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('姓名', '性別', '年齡', 'email', '**', '……');
foreach ($head as $i => $v)
// 將資料通過fputcsv寫到檔案控制代碼
fputcsv($fp, $head);
// 計數器
$cnt = 0;
// 每隔$limit行,重新整理一下輸出buffer,不要太大,也不要太小
$limit = 100000;
// 逐行取出資料,不浪費記憶體
while ($row = $stmt->fetch(zend_db::fetch_num))
foreach ($row as $i => $v)
fputcsv($fp, $row);
}
php 匯出csv檔案例項
csv是以逗號間隔的文字檔案 開發中,匯出功能經常會用到,當資料量比較大的時候,發現csv格式的效率要比xls的效率要高一些,以yii先開發為例,優化 資料匯出 public filename 方法1 public function export item iconv utf 8 gbk val p...
php實現匯出csv檔案
為何要用csv匯出檔案呢,因為它小巧,匯出資料效率高,萬行資料秒級匯出。不香嗎?user 青草根 email caimh0223 163.com blog qq 876146977 微 信 caimh0223 date 2020 05 30 time 14 08 description 輸入到csv...
PHP實現匯出CSV檔案
在做匯出乙個資訊表為excel檔案這個功能完成之後,自己用得好好的,但是到hr那邊就告訴我匯出的檔案無法用她電腦上的office開啟,心想,相容沒做好,想問下她的版本號,結果半天沒回覆訊息。我老大來了句 轉csv檔案吧,沒有相容性的說法。然後開始折騰csv,在這之前我只是見過 匯出csv檔案 的字樣...