PHP 高性能 Excel 扩展 1.2.8 发布,文件读取数据类型可控!

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

本作品采用《CC 协议》,转载必须注明作者和本文链接
本帖由系统于 7个月前 自动加精
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 12

大佬 :+1: :+1: :+1: :+1: :+1:

1年前 评论

老哥,我又回来了。请问这个扩展支持读取xls吗,我试了下,读到的咋是空呢
不好意思,我看了一遍文章发现了,支持07以上的xlsx文件读取

1年前 评论
viest (楼主) 1年前
littledragoner (作者) 1年前
viest (楼主) 1年前
littledragoner (作者) 1年前
wanghan

1.2.7刚用两天,这么快都升级了。。。

1年前 评论
viest (楼主) 1年前

这个扩展牛

1年前 评论

我看目前的导出功能只能导出到服务器上,可以直接导出到客户端电脑上吗,浏览器下载那样

1年前 评论
klusfq 1年前
viest (楼主) 1年前
JaguarJack
php -ini|grep xlswriter

可不可把版本号曝露出来

1年前 评论
viest (楼主) 1年前
lovecn 1年前

大佬,后面有支持windows读文件的计划吗

1年前 评论

谢谢分享

1年前 评论

centos7 怎么安装

6个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!