爲性能而生,PHP Excel 擴展 xlswriter 1.3.3 發佈!

WechatIMG23.png

xlswriter是一個 PHP C 擴展,可用於在 Excel 2007+ XLSX 文件中讀取數據,插入多個工做表,寫入文本、數字、公式、日期、圖表、圖片和超連接。php

它具有如下特性:git

1、寫入
  • 100%兼容的Excel XLSX文件
  • 完整的Excel格式
  • 合併單元格
  • 定義工做表名稱
  • 過濾器
  • 圖表
  • 數據驗證和下拉列表
  • 工做表PNG/JPEG圖像
  • 用於寫入大文件的內存優化模式
  • 適用於Linux,FreeBSD,OpenBSD,OS X,Windows
  • 編譯爲32位和64位
  • FreeBSD許可證
  • 惟一的依賴是zlib
2、讀取
  • 完整讀取數據
  • 光標讀取數據
  • 按數據類型讀取
  • xlsx 轉 CSV

基準測試

測試環境: 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']]

XLSX 轉 CSV 【常規模式】

應用場景

  • 較多的 xlsx 文件碎片,合併爲單一CSV文件,統一處理;
  • xlsx文件新增的速度大於任務處理速度,可異步將文件轉爲CSV後,使用更高效的工具處理(例如:數據庫工具直接導入CSV);

示例

demo.php

$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);

file.csv

String,Int,Double
Item_1,10,10.9999995
String,Int,Double
Item_1,10,10.9999995

xlsx 轉 CSV 【回調模式】

應用場景與常規模式相似,不一樣之處在於上層業務能夠在回調函數中加工數據,將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優化

End

最後的最後請不要忘記 starspa

相關文章
相關標籤/搜索