xlswriter是一個 PHP C 擴展,可用於在 Excel 2007+ XLSX 文件中讀取數據,插入多個工做表,寫入文本、數字、公式、日期、圖表、圖片和超連接。php
它具有如下特性:git
測試環境: Macbook Pro 13 inch, Intel Core i5, 16GB 2133MHz LPDDR3 Memory, 128GB SSD Storage.數據庫
兩種內存模式導出100萬行數據(每行27列,數據類型均爲字符串,單個字符串長度爲19)
29S
,內存只需 2083MB
;52S
,內存僅需 <1MB
;100萬行數據(單行1列,數據類型爲INT)
3S
,內存僅 558MB
;2.8S
,內存僅 <1MB
;$excel = new \Vtiful\Kernel\Excel(['path' => '/home/viest']); // fileName 會自動建立一個工做表,你能夠自定義該工做表名稱,工做表名稱爲可選參數 $filePath = $excel->fileName('tutorial01.xlsx', 'sheet1') ->header(['Item', 'Cost']) ->data([ ['Rent', 1000], ['Gas', 100], ['Food', 300], ['Gym', 50], ]) ->output();
$excel = new \Vtiful\Kernel\Excel(['path' => './tests']); // 導出測試文件 $filePath = $excel->fileName('tutorial.xlsx') ->header(['Item', 'Cost']) ->output(); // 讀取測試文件 $data = $excel->openFile('tutorial.xlsx') ->openSheet() ->getSheetData(); var_dump($data); // [['Item', 'Cost']]
$excel = new \Vtiful\Kernel\Excel(['path' => './tests']); $filePath = $excel->fileName('tutorial.xlsx', 'TestSheet1') ->header(['String', 'Int', 'Double']) ->data([ ['Item_1', 10, 10.9999995], ]) ->output(); // 寫入方式打開,將文件指針指向文件末尾。 $fp = fopen('./tests/file.csv', 'a'); // 將 xlsx 文件寫入 CSV $resultBoolOne = $excel->openFile('tutorial.xlsx') ->openSheet() ->putCSV($fp); // 將 xlsx 文件追加寫入 CSV $resultBoolTwo = $excel->openFile('tutorial.xlsx') ->openSheet() ->putCSV($fp);
String,Int,Double Item_1,10,10.9999995 String,Int,Double Item_1,10,10.9999995
應用場景與常規模式相似,不一樣之處在於上層業務能夠在回調函數中加工數據,將xlsx中的數據過濾加工並寫入csv。異步
https://xlswriter-docs.viest.me函數
Github:https://gitee.com/viest/php-ext-xlswriter工具
Gitee:https://gitee.com/viest/php-ext-xlswriter測試
PECL:https://pecl.php.net/package/xlswriter優化
最後的最後請不要忘記 star
spa