PHP 高效能 Excel 擴充套件 1.2.8 釋出,檔案讀取資料型別可控!

vikin發表於2019-09-16

為什麼使用 xlswriter

xlswriter 是一個 PHP C 擴充套件,可用於在 Excel 2007+ XLSX 檔案中讀取資料,插入多個工作表,寫入文字、數字、公式、日期、圖表、圖片和超連結。

請參考下方對比圖;由於記憶體原因,PHPExcelPHPSpreadSheet 在資料量 相對較大 的情況下無法正常工作,雖然可以通過 修改memory_limit 配置來解決記憶體問題,但完成工作的時間可能會更長;

PHP 高效能 Excel 擴充套件 1.2.7 釋出

它支援以下功能:
一、寫入
  • 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

相關文章