为性能而生,PHP Excel 扩展 xlswriter 1.3.3 发布!
xlswriter是一个 PHP C 扩展,可用于在 Excel 2007+ XLSX 文件中读取数据,插入多个工作表,写入文本、数字、公式、日期、图表、图片和超链接。
它具备以下特性:
一、写入
- 100%兼容的Excel XLSX文件
- 完整的Excel格式
- 合并单元格
- 定义工作表名称
- 过滤器
- 图表
- 数据验证和下拉列表
- 工作表PNG/JPEG图像
- 用于写入大文件的内存优化模式
- 适用于Linux,FreeBSD,OpenBSD,OS X,Windows
- 编译为32位和64位
- FreeBSD许可证
- 唯一的依赖是zlib
二、读取
- 完整读取数据
- 光标读取数据
- 按数据类型读取
- 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
;
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。
仓库地址
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 协议》,转载必须注明作者和本文链接
本帖由系统于 5年前 自动加精
给巨佬递茶
xlsx 文件可以追加写吗?
@vikin 请教一个问题,我有一个 excel 文件,文件比较大,不想要全量读取,游标读取比较理想,但是前n行和后m行我不想要,请问游标读取模式下有跳过几行的功能吗?
类似:
实际上我是在做一个导入的功能,用户操作流程如下:
姓名
列对应User
的name
User
实例导出的时候 表头和数据绑定么
请问支持swoole下使用么
@vikin 大佬,这样使用对么?
@viest
大佬 麻烦问下在 Ubuntu 16.04.6 下执行 pecl install xlswriter 安装完成后 出现这个是什么原因 麻烦帮忙看看
推荐一个功能丰富、兼容性好、高性能的 Excel 文档基础库:github.com/xuri/excelize
请问Windows下 上传导入 path 需要如何设置?
无敌 666
普通模式可以导出 挺快的 但是用文档里的固定内存模式导出的是无法打开 打开提示要修复。。。这是啥情况 有大神解答下么? 就是文档里面的示例 复制出来的
忽略空行有问题,老板,已提issue
这个只能读取本地文件吗