php导出大量数据到excel使用轻量级的PHP_XLSXWriter比用phpexcel效率更高,2020年9月10日实测!
在网页应用中我们经常会把数据导出到EXCEL表,之前我一直使用PHPEXCEL作为导出类库,因为它有丰富的EXCEL支持,可以随意调整表格样式。
但在近期有一个25万数据的表需要导出,使用PHPEXCEL导出表格之后里面有很多内容是空的,虽然把数据分成了N个表格,每个表格只装一万数据,但效果还是如下图所示,空了一片。
鉴于对表格样式要求不高,但对数据要求又很严格必须都精确导出的前提下,我选择了 PHP_XLSXWriter。
PHP_XLSXWriter 比 PHPEXCEL更轻量,只需要引用一个类文件即可。
但它对于大批量数据导出的支持却更好。经过测试25万条数据(还是按每个表格放1万条来算),生成26个表格只用不到一分钟。
而且所有数据库中的内容都精确的导出来了,没有任何问题。
在需要导出大批量数据的情况下,建议还是使用 PHP_XLSXWriter,下面我们来看一下它的用法。
你只需要在你的代码中引用 这个CLASS文件即可(这点比PHPEXCEL要省心很多)
引用之后,你只需要创建几个数组,然后使用下面这几行代码就可以生成EXCEL文件
其中 $header 是设置EXCEL的标题,示例代码:
$header = array(
'c1-text'=>'string',//text
'c2-text'=>'@',//text
'c3-integer'=>'integer',
'c4-integer'=>'0',
'c5-price'=>'price',
'c6-price'=>'#,##0.00',//custom
'c7-date'=>'date',
'c8-date'=>'YYYY-MM-DD',
);
你需要定义好你需要的表格列名,列名后面跟上类型即可。
styles1 是这列的样式属性,我们可以通过styles1数组设置这列的 字体 字号 粗细 位置等属性。
$styles1 = array('font'=>'Arial','font-size'=>11,'font-style'=>'bold'
, 'fill'=>'#eee', 'halign'=>'center', 'border'=>'left,right,top,bottom');
$rows 是表格的内容区域,依然是通过数组来定义的,有多少内容就加多少个数组元素即可。
$rows = array(
array('x101',102,103,104,105,106,'2018-01-07','2018-01-08'),
array('x201',202,203,204,205,206,'2018-02-07','2018-02-08'),
array('x301',302,303,304,305,306,'2018-03-07','2018-03-08'),
array('x401',402,403,404,405,406,'2018-04-07','2018-04-08'),
array('x501',502,503,504,505,506,'2018-05-07','2018-05-08'),
array('x601',602,603,604,605,606,'2018-06-07','2018-06-08'),
array('x701',702,703,704,705,706,'2018-07-07','2018-07-08'),
);
$styles2 是定义了一下内容行的高度,注意:这个属性对 header是不起作用的。
$styles2 = array('height'=>18);
有了这些示例属性我们就可以直接用PHP代码创建一个EXCEL文件了。
在实际应用中我们一般都是从数据库中导出数据,所以还需要通过数据库把几个数组生成。
使用 show full columns 的方式把数据表字段都调用出来,然后通过循环的方式把它们push到 header数组中当标题。
把内容都取出来,通过 push方法加到 $rows 数组中,这样就OK了。
再把几个数组放在生成代码处,就可以实现导出数据库内容到EXCEL了。
再看一下 PHP_XLSXWriter 的说明:5万数据 1.4S ,对于追求效率的同学来说这个简直不要太爽了的说。。。
- 利用腾讯云 COS 云对象存储定时远程备份网站
- 腾讯云技术公开课:零基础入门高可用云端架构设计
- 包学会之浅入浅出Vue.js:开学篇
- 包学会之浅入浅出Vue.js:升学篇
- 一个只有99行代码的JS流程框架 (一)
- 【腾讯云的1001种玩法】试用腾讯云 Windows Server 2012 R2 镜像的几点经验分享
- 一个只有99行代码的JS流程框架(二)
- 看书的时候如何调试书中简单的C+代码?
- gcForest 集成学习方法的 Python 实现
- 云端架构师养成系列之一:高性能云硬盘入门与实战(视频)
- 云端架构师养成系列之二:云端负载均衡上手与实践
- 微信 PaxosStore:海量数据冷热分级架构
- 使用腾讯云容器服务来构建简单web service
- 使用 plotly 绘制数据图表
- php概述
- php教程
- php环境搭建
- PHP书写格式
- php变量
- php常量
- PHP注释
- php数组
- php字符串 string
- PHP整型 integer
- PHP浮点型 float
- php布尔型
- php数据类型之数组
- php数据类型之对象
- php数据类型之null
- php数据类型之间的转换
- php运算符
- php表达式
- PHP循环控制
- PHP流程控制
- php函数
- php全局变量
- PHP魔术变量
- php命名空间
- php 日期
- PHP包含文件
- php文件
- PHP 文件上传
- php Cookies
- php Sessions
- php email
- php安全email
- php错误处理
- PHP异常处理
- php过滤器
- PHP 高级过滤器
- php json
- php 表单
- PHP MySQL 简介
- PHP 连接 MySQL
- php创建数据库
- php 创建表
- php mysq 插入数据
- PHP MySQL 插入多条数据
- PHP MySQL 预处理语句
- php mysql 读取数据
- php mysql where
- PHP MySQL Order By
- PHP MySQL Update
- PHP MySQL Delete
- php ODBC
- TSF微服务无法查看JVM监控问题
- Mitmproxy 的安装与使用案例
- leetcode之Bigram分词
- TensorFlow2 开发指南 | 01 手写数字识别快速入门
- Spring 数据初始 H2 后进行数据查询提示 Schema not found 错误
- Discourse CentOS 8 全新安装手册
- H2 数据库插入时间的方法
- Spring 配置的 H2 控制台 frameOptions 导致无法访问
- Spring Boot 和 Hibernate 的 H2 数据库配置来进行启动测试
- Java时间处理-LocalDateTime简介
- iOS音视频接入 - TRTC iOS端真机日志导出
- jQuery根据填写的input的数值导出excel表格
- 小程序根据返回值英文渲染出对应的中文
- 小程序返回的时间戳转化成时间
- 小程序使用 组件库 vant-weapp详细教程