fputcsv() 函數將行格式化為 CSV 并寫入一個打開的文件,該函數返回寫入字符串的長度,若出錯,則返回 false.
說明:fputcsv() 將一行(用 fields 數組傳遞)格式化為 CSV 格式并寫入由 file 指定的文件.
PHP實例代碼如下:
- // 輸出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('姓名', '性別', '年齡', 'Email', '電話', '……');
- foreach ($head as $i => $v) {
- // CSV的Excel支持GBK編碼,一定要轉換,否則亂碼
- $head[$i] = iconv('utf-8', 'gbk', $v);
- }
- // 將數據通過fputcsv寫到文件句柄
- fputcsv($fp, $head);
- // 計數器
- $cnt = 0;
- // 每隔$limit行,刷新一下輸出buffer,不要太大,也不要太小
- $limit = 100000;
- // 逐行取出數據,不浪費內存
- while ($row = $stmt->fetch(Zend_Db::FETCH_NUM)) {
- //開源代碼Vevb.com
- $cnt ++;
- if ($limit == $cnt) { //刷新一下輸出buffer,防止由于數據過多造成問題
- ob_flush();
- flush();
- $cnt = 0;
- }
- foreach ($row as $i => $v) {
- $row[$i] = iconv('utf-8', 'gbk', $v);
- }
- fputcsv($fp, $row);
- }
新聞熱點
疑難解答