PHP 高性能 Excel 扩展 1.2.8 发布,文件读取数据类型可控!
PHP    2019-09-16 20:23:50    21    0    0
admin   PHP

为什么使用 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

上一篇: 《用好 Channel,用好 Golang》系列之 Stream

下一篇: 产品经理综合症:学习会是唯一治愈路径?

21
登录 后评论.
没有帐号? 现在注册.
0 评论
Table of content