ark4ne / xl-reader
高性能Excel阅读器(CSV,TSV,XLSX)
v1.0.2
2024-04-22 12:21 UTC
Requires
- php: ^7.0|^8.0
- ext-xmlreader: *
- ext-zip: *
Requires (Dev)
- phpunit/phpunit: ^6.0 | ^7.0 | ^8.0 | ^9.0
- satooshi/php-coveralls: ~1.0
This package is auto-updated.
Last update: 2024-09-22 13:16:50 UTC
README
高性能excel阅读器,具有非常低的内存消耗。
安装
$ composer require ark4ne/xl-reader
文件支持
xlsx
: 速度最快的xlsx阅读器。tsv
: tsv阅读器。csv
: 可配置的csv阅读器(自动检测逗号或分号)。
使用方法
读取文件
$file = "my-calc.xlsx"; $reader = \Ark4ne\XlReader\Factory::createReader($file); $reader->load(); foreach ($reader->read() as $row){ // do stuff }
每个 $row
将包含通过列键(A,B,C,...)索引的数据。
/* my-calc.xlsx | A | B | C | | abc | 123 | some | */ foreach ($reader->read() as $row){ $row === [ 'A' => 'abc', 'B' => '123', 'C' => 'some', ]; }
在excel中,空单元格不会报告
/* my-calc.xlsx | A | B | C | | abc | | some | */ foreach ($reader->read() as $row){ // do stuff $row === [ 'A' => 'abc', 'C' => 'some', ]; }
对于数字(mac)和许多其他xlsx生成器,空单元格将被报告为 null
/* my-calc.xlsx | A | B | C | | abc | | some | */ foreach ($reader->read() as $row){ // do stuff $row === [ 'A' => 'abc', 'B' => null, 'C' => 'some', ]; }
处理工作表(XLSX阅读器)
默认情况下,读取第一个工作表。
您可以使用 getWorksheets()
获取所有工作表。
$worksheets = $reader->getWorksheets(); /* [ ['id' => 1, 'name' => 'sheet 1'], ['id' => 2, 'name' => 'sheet 2'], ] */
您可以使用 getSelectedWorksheet()
获取所选工作表。
$worksheet = $reader->getSelectedWorksheet(); /* ['id' => 1, 'name' => 'sheet 1'], */
您有三种方法选择要处理的工作表
- 按索引:
selectSheetByIndex(int $index)
- 按id:
selectSheetById(int $id)
- 按名称:
selectSheetByName(string $name)
性能
内存
内存使用量仅受要读取的字符串数量影响
load()
方法直接受此影响。要加载的字符串越多,我们需要的加载时间就越长。(逻辑,任何东西都是神奇的)
一旦字符串被加载,我们就达到了内存使用的峰值。
读取数据几乎不消耗内存。
只有当前行会被加载到内存中。
读取
1024个字符串的基准测试
读取速度取决于要读取的单元格数量。要读取的单元格越多,读取时间就越长。
然而,要读取的单元格数量对内存使用没有影响。