A. phpexcel 讀取csv大文件只讀取顯示A列
雖然有Excel操作類,不建議使用。php操作excel本來就很不地道,表格復雜點就出錯,特別是在linux系統上就更麻煩了。
CSV是通用格式,你可以用excel另存為csv格式,再交給php處理。php有專門的fgetcsv()來讀取csv中的數據。
B. phpexcel 在windows下邊導出中文,沒有問題,但是在linux下就倒不出中文,是亂碼不知道是為什麼急~~~
沒看明白。
是Windows下面的 IE 瀏覽器訪問網站獲得 excel 文件正常。Linux 下面的瀏覽器訪問網站不正常?
C. PHPEXCAL導出excal後A1格中大量亂碼
ob_end_clean();//清除緩沖區,避免亂碼
// Redirect output to a client』s web browser (Excel5)
header('Content-Type: application/vnd.ms-excel;charset=utf-8');
// header('Content-Type: application/vnd.ms-excel;charset=gbk');
$filenames=$filename.'('.date('Ymd-His').').xls';
header("Content-Disposition: attachment;filename={$filenames}");
header('Cache-Control: max-age=0');
把這幾段代碼加到 $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
上面 ,後面
// 從瀏覽器直接輸出$filename 以後的都刪了
D. utf8編碼的php導出CSV亂碼怎麼解決
解決亂碼的方法:首先使用iconv函數將utf8編碼轉碼為GBK,語法為「$str = iconv('utf-8' 'GBK//IGNORE' $str));」。其次,在輸出內容前先輸出BOM頭,這樣Excel可自動識別到是UTF-8。其實需求是將數據導出到Excel,PHPExcel庫雖然強大,但在內存使用上較為昂貴,對於超過10萬的數據處理在web請求中較為困難。因此,使用原生PHP導出輕量的csv仍然是有需求的。
通常情況下,將UTF-8編碼的內容導出到csv中,使用Excel打開會顯示亂碼,尤其是非主流字元或emoji表情。這是因為windows系統默認的Excel使用GBK編碼解析。現今,編碼通常都是使用UTF-8,除非是大公司知名產品為了節省流量而出有GBK等其他編碼的版本。
解決亂碼問題,通常使用PHP中的iconv函數進行轉碼為GBK,這樣默認的Excel打開就不會有問題。但對於emoji表情等主流字元,GBK並不能顯示,轉碼失敗直接為空。可以添加//IGNORE標記進行忽略,這樣只是忽略了它們,其他正常字元仍然能保留。
$str = iconv('utf-8' 'GBK//IGNORE' $str));
這可以說是一種折中方案。能否不轉碼直接輸出UTF-8?Excel是否能自動識別UTF-8並使用UTF-8來解碼顯示?答案是可以的,只是需要一個BOM頭(非windows系統中沒有這個東西),有BOM頭它就能識別到是UTF-8,否則會用默認的GBK處理,導致亂碼。正確的輸出BOM頭如下:
$fp = fopen('/test_csv.csv' 'a');fwrite($fp,chr(0xEF).chr(0xBB).chr(0xBF)); //輸出BOM頭fputcsv($fp, ['標題']);fputcsv($fp, ['解決亂碼']);fclose($fp);
以上測試結果證實,這種方法可以解決亂碼問題,並正常顯示emoji表情等非主流字元。