为什么使用 xlswriter

xlswriter 是一个 PHP C 扩展,可用于在 Excel 2007+ XLSX 文件中读取数据,插入多个工作表,写入文本、数字、公式、日期、图表、图片和超链接。

请参考下方对比图;由于内存原因,PHPExcel 与 PHPSpreadSheet 在数据量 相对较大 的情况下无法正常工作,虽然可以通过 修改memory_limit 配置来解决内存问题,但完成工作的时间可能会更长;

31b9a2aecf623a68e8037fc71e81f0f.png

它支持以下功能:

一、写入

● 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 inchIntel Core i516GB 2133MHz LPDDR3 Memory128GB 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-export

Gitee:https://gitee.com/viest/php-ext-xlswriter

PECL:https://pecl.php.net/package/xlswriter

文档

https://xlswriter-docs.viest.me

End

最后的最后请不要忘记 star

更多PHP知识,请访问PHP中文网PHP教程

更多相关文章

  1. 给 PHP 开启 shmop 扩展实现共享内存
  2. php+nodeJs+thrift协议,实现zookeeper节点数据自动发现
  3. PHP 实现常用数据结构之链表
  4. php实现共享内存进程通信函数之shm
  5. TCP 的连接建立与关闭状态及数据传输通信过程【含有 PHP socket
  6. 使用 PHP Masked Package 屏蔽敏感数据
  7. php操作共享内存shmop类及简单使用测试(代码)
  8. php读取数据库乱码
  9. PHP操作数据库

随机推荐

  1. android 仿QQ界面
  2. Android关于分屏的知识总结
  3. Android真响应式架构——Model层设计
  4. Android中的字符串
  5. 学习培训Android软件工程师之不归路
  6. Linux内核怎样启动Android
  7. Android中的布局和控件
  8. Android:什么情况?
  9. Android开发集锦之二:android中的数据库操
  10. Android布局优化(四)X2C — 提升布局加载速