• 欢迎来到本博客,希望可以y一起学习与分享

phpSpreadSheet/导出/导入excel/csv/pdf

PHP benz 6个月前 (04-01) 17次浏览 0个评论 扫描二维码
文章目录[隐藏]

前言

1、spout仅支持CSV, XLSX and ODS导出/导入;phpSpreadSheet支持CSV, XLSX , XLS, ODS导出/导入,PDF导出。
2、spout仅支持简单的Excel操作方法;phpSpreadSheet支持丰富的Excel操作方法。
3、导出效率与内存使用,spout与phpSpreadSheet都不错。
4、导入效率与内存使用,spout比phpSpreadSheet好很多。大数据的时候,phpSpreadSheet会使用大量内存,且不会释放内存,官方提供的缓存与分块,不能解决内存过大的问题,而且导入效率慢;spout只使用了极少的内存,且导入效率高。

结论
1、如果对Excel操作不复杂,推荐使用spout。
2、大数据导入千万不要用phpSpreadSheet,使用spout代替。

快速上手

安装phpSpreadSheet扩展包

根据phpspreadsheet-helper基础上修改的工具类:

导出(使用phpSpreadSheet)

大数据导出(推荐)

根据TP5.1的游标,以excel作为示例,CSV/PDF等也可以使用

导出excel

导出CSV

记得$writer->setUseBOM(true);否则中文会乱码

导出PDF

需要安装tcpdf扩展包

保存为本地文件

只要\officeTool::output();改成\officeTool::save('文件名(可带路径)');

导入(使用spout)

php需要开启php_zip

导入excel/csv

文档

phpSpreadSheet

中文文档
官方文档
文档部分主要的菜单↓↓

一点个人经验:

\vendor\phpoffice\phpspreadsheet\samples\index.php 这里面有很多的demo

TcPDF一些函数

详解PhpSpreadsheet设置单元格

PhpSpreadsheet提供了丰富的API接口,可以设置诸多单元格以及文档属性,包括样式、图片、日期、函数等等诸多应用,总之你想要什么样的Excel表格,PhpSpreadsheet都能做到。

在调试设置时,确保引入了正确的文件并实例化。

字体
第1行代码将A7至B7两单元格设置为粗体字,Arial字体,10号字;第2行代码将B1单元格设置为粗体字。

颜色
将文字颜色设置为红色。

图片
可以将图片加载到Excel中。

列宽
将A列宽度设置为30(字符)。

如果需要自动计算列宽,可以这样:

设置默认列宽为12。

行高
设置第10行行高为100pt。

设置默认行高。

对齐
将A1单元格设置为水平居中对齐。

合并
将A18到E22合并为一个单元格。

拆分
将合并后的单元格拆分。

边框
将B2至G8的区域添加红色边框。

工作表标题
设置当前工作表标题。

日期时间
设置日期格式。

换行
使用\n进行单元格内换行,相当于(ALT+”Enter”)。

超链接
将单元格设置为超链接形式。

使用函数
使用SUM计算B5到C5之间单元格的总和。其他函数同理:最大数(MAX),最小数(MIN),平均值(AVERAGE)。

设置文档属性
可以设置Excel文档属性。

此外,除了提供丰富的Excel文件处理接口外,PhpSpreadshee还提供了CSV,PDF,HTML以及XML等文件处理接口。

更多使用设置请参照官网文档:https://phpspreadsheet.readthedocs.io/en/stable/

优化测试

普通的导出xlsx (亲测封顶3000多条)

优化后的导出xlsx (亲测封顶6万条)

如果加上优化的话 最多极限是6万条,这个是excel的文件限制
原理:其实主要是导出的时候服务器内存的问题导致无法导出大数据,所以要分流导出 并且释放内存 刷新缓冲

如果使用csv的话可以导出百万级,当然也要内存支持,但是也差不多足够

扩展

mysql导出excel/csv:


文章 phpSpreadSheet/导出/导入excel/csv/pdf 转载需要注明出处
喜欢 (0)

您必须 登录 才能发表评论!