PHP如何用xlswriter优化Excel导出性能
这篇文章主要介绍了PHP如何用xlswriter优化Excel导出性能的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇PHP如何用xlswriter优化Excel导出性能文章都会有所收获,下面我们一起来看看吧。
关于xlswriter
xlswriter 是一个 PHP C 扩展,旨在提升php在导出大数据量时的性能问题,支持 windows / Linux 。可用于在 Excel 2007+ XLSX 文件中读取数据,插入多个工作表,写入文本、数字、公式、日期、图表、图片和超链接。
它具备以下特性:
一、写入
100%兼容的 Excel XLSX 文件
完整的 Excel 格式
合并单元格
定义工作表名称
过滤器
图表
数据验证和下拉列表
工作表 PNG/JPEG 图像
用于写入大文件的内存优化模式
适用于 Linux,FreeBSD,OpenBSD,OS X,Windows
编译为 32 位和 64 位
FreeBSD 许可证
唯一的依赖是 zlib
二、读取
完整读取数据
光标读取数据
按数据类型读取
xlsx 转 CSV
性能对比
先感谢网友提供数据
下载安装
github源码
xlswriter 文档
下载 ide helper
但是我一直下载失败,于是去github仓库直接下载 https://github.com/viest/php-ext-xlswriter-ide-helper
然后将里面的几个类复制到一个 xlswriter_ide_helper.php 文件里面,将这个文件放到你的项目中就有代码提示了。
安装 xlswriter 扩展
此处在docker中安装
性能测试:
测试数据:20 列,每列长度为 19 英文字母
Xlswriter
PHPSpreadSheet
PHP_XLSXWriter
使用示例:
如果发现下载的文件有时候打不开,那应该是你使用了官方的DEMO,问题出在 filesize(),这个函数是有缓存的,所以你会发现下载下来的文件和原始的文件大小不一样。要么像我一样不去设置 Content-Length,要么使用 clearstatcache()手动清除缓存。
实测5w条记录导出耗时1.5s,效果还是很强劲的。
导出效果
- ● PHP批量对TCP服务端指定多个IP非阻塞检查在线状态
- ● python实现TCP服务端持续接收关机、重启指令并输出结果【系列三】
- ● PHP给TCP服务端发送指令【系列二】
- ● PHP判断TCP服务端是否在线【系列一】
- ● PHP判断远程文件是否存在
- ● LINUX下用PHP获取CPU型号、内存占用、硬盘占用等信息代码
- ● PHP代码用UDP方式远程唤醒电脑让计算机开机
- ● apache下php生成验证码图片不能显示
- ● PHP使用AES加密解密示例(无偏移)
- ● Pluginmysql_native_passwordreported:''mysql_native_password'isdeprecate问题