為什麼使用 xlswriter
xlswriter 是一個 PHP C 擴充套件,可用於在 Excel 2007+ XLSX 檔案中讀取資料,插入多個工作表,寫入文字、數字、公式、日期、圖表、圖片和超連結。
請參考下方對比圖;由於記憶體原因,PHPExcel
與 PHPSpreadSheet
在資料量 相對較大
的情況下無法正常工作,雖然可以通過 修改memory_limit
配置來解決記憶體問題,但完成工作的時間可能會更長;
它支援以下功能:
一、寫入
- 100%相容的Excel XLSX檔案
- 完整的Excel格式
- 合併單元格
- 定義工作表名稱
- 過濾器
- 圖表
- 資料驗證和下拉選單
- 工作表PNG/JPEG影象
- 用於寫入大檔案的記憶體優化模式
- 適用於Linux,FreeBSD,OpenBSD,OS X,Windows
- 編譯為32位和64位
- FreeBSD許可證
- 唯一的依賴是zlib
二、讀取
- 完整讀取資料
- 游標讀取資料
- 按資料型別讀取
1.2.8 新特性
1、新增日期寫入
$config = [
'path' => './tests'
];
$fileObject = new \Vtiful\Kernel\Excel($config);
$fileObject = $fileObject->fileName('tutorial.xlsx');
$filePath = $fileObject->header(['date'])
->insertDate(1, 0, time(), 'mmm d yyyy hh:mm AM/PM')
->output();
2、新增自定義單元格資料型別讀取
$config = [
'path' => './tests',
];
$fileObject = new \Vtiful\Kernel\Excel($config);
$fileObject->openFile('tutorial.xlsx')
->openSheet();
var_dump($fileObject->nextRow([
\Vtiful\Kernel\Excel::TYPE_STRING,
\Vtiful\Kernel\Excel::TYPE_TIMESTAMP,
]));
基準測試
測試環境:
- Macbook Pro 13 inch
- Intel Core i5
- 16GB 2133MHz LPDDR3 Memory
- 128GB SSD Storage.
匯出
兩種記憶體模式,匯出100W行資料,單行27列,每個單元格19箇中文字元
- 常規模式: 耗時 29S,記憶體佔用 2083MB;
- 固定記憶體模式: 耗時 52S, 記憶體佔用 <1MB;
讀取
讀取 100W 行資料,每行1列,單元格資料為int
- 全量讀取: 耗時 3S, 記憶體佔用 558MB;
- 遊標讀取: 耗時 2.8S, 記憶體佔用 <1MB;
倉庫地址
Github:https://github.com/viest/php-ext-excel-exp...
Gitee:https://gitee.com/viest/php-ext-xlswriter
PECL:https://pecl.php.net/package/xlswriter
文件
https://xlswriter-docs.viest.me
End
最後的最後請不要忘記star