这篇文章给大家介绍的内容是关于如何用phpspreadsheet来切割excel大文件(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

背景:

利用phpspreadsheet可以轻松的解析excel文件,但是phpspreadsheet的内存消耗也是比较大的,我试过解析将近5M的纯文字excel内存使用量就会超过php默认的最大内存128M。

当然这可以用调节内存大小的方法来解决,但是在并发量大的时候就比较危险了。所以今天介绍下第二种方法,利用phpspreadsheet对excel文件进行切割,这是个拿时间换空间的方法所以一般对时效性要求低的需求可以使用。

方法:

先放个phpspreadsheet官网提供的一个功能readCell,我们就可以利用这个功能来进行切割。

首先对excel文件进行预读,主要是获取所有的工作表以及工作表下面的数据行数,这个阶段readCell方法一直返回的都是false,我们只需要记录readCell进来的工作表及数据行数。

然后就是对获取到的记录进行分析,确定每部分数据需要装多少行原始excel的数据,需要注意的是为了避免内容混淆,不要讲两个工作表的内容切到一起。

最后就是循环分析的数据和再次利用readCell获取每部分数据,注意每次读取文件后都要利用disconnectWorksheets方法清理phpspreadsheet的内存。

经过我自己的测试发现,利用该方法解析5M的excel文件,平均只需要21M的内存就可以搞定!

代码:

https://github.com/wangyelou/Tools/tree/master/CutExcel

相关文章推荐:

如何用PHP读取excel文件内容、获取单元格数据

php实现验证码的步骤以及服务端校验的代码

php大文件读取excel分割,如何用phpspreadsheet来切割excel大文件(附代码)相关推荐

  1. php 上传文件 重命名_如何用PHP给上传的文件改名

    用PHP给上传的文件改名的方法:首先新建一个html文件,并创建form表单:然后新建Php文件用于接收form表单传递过来的文件数据,并设置文件的编码为utf8:接着创建上传文件保存的目录变量[$s ...

  2. Winform中通过NPOI导出Excel的三种方式(HSSFWorkbook,XSSFWorkbook,SXSSFWorkbook)附代码下载

    场景 HSSFworkbook,XSSFworkbook,SXSSFworkbook区别 HSSFWorkbook: 是操作Excel2003以前(包括2003)的版本,扩展名是.xls:导出exce ...

  3. java 文件读取 逗号分隔_如何用逗号(,)作为R中的分隔符读取csv文件

    我正在尝试在R.中读取此csv文件 . (scores.csv) ALVO,P,Prediction,fold 1,0.9079557994069131,"1",0 1,0.432 ...

  4. python读取文件r_python 文件读写模式r,r+,w,w+,a,a+的区别(附代码示例)

    如下表 模式 可做操作 若文件不存在 是否覆盖 r 只能读 报错 - r+ 可读可写 报错 是 w 只能写 创建 是 w+ 可读可写 创建 是 a 只能写 创建 否,追加写 a+ 可读可写 创建 否, ...

  5. 在Linux中将文件读取到内存,将linux进程的内存转储到文件中

    我不确定如何在不重复执行此操作的情况下将所有内存转储到文件中(如果有人知道自动获取gdb的方法请告诉我),但以下内容适用于任何一批内存,假设您知道pid: $cat /proc/[pid]/maps ...

  6. 医学假阴性?看看在机器学习中如何用来衡量分类模型的效果(附代码)

    来源:数据鸽 本文约1500字,建议阅读5分钟. 本篇我们来看下医学假阴性在机器学习中是如何用来衡量预测结果好坏的. 近日来,新冠肺炎核酸检测"假阴性"引起了关注.所谓的假阴性,就 ...

  7. 【明星自动大变脸】最新StarGAN对抗生成网络实现多领域图像变换(附代码)

    2019独角兽企业重金招聘Python工程师标准>>> 图像到图像转化的任务是将一个给定图像的特定方面改变到另一个方面,例如,将一个人的面部表情从微笑到皱眉改变(见图1).自从生成对 ...

  8. python 文件读写模式r,r+,w,w+,a,a+的区别(附代码示例)

    模式 可做操作 若文件不存在 是否覆盖 r 只能读 报错 - r+ 可读可写 报错 是 w 只能写 创建 是 w+ 可读可写 创建 是 a 只能写 创建 否,追加写 a+ 可读可写 创建 否,追加写 ...

  9. 【原创纯手打】如何用微信小程序写留言板(附代码)

    首先我们先创建三个输入框,分别绑定响应的触发条件,微信双向绑定和VUE不一样,需要setData 名字<input type="text" value="{{nam ...

最新文章

  1. Android的内存优化
  2. 服务端 I/O 性能大比拼:Node、PHP、Java、Go哪家强?
  3. CefSharp试用
  4. 源码都没调试过,怎么能说熟悉 redis 呢?
  5. 可以搜python编程答案的软件_python实现百万答题自动百度搜索答案
  6. [转]Ubuntu远程桌面登陆
  7. 借助云开发轻松实现后台数据批量导出丨实战
  8. java实验多线程机制_JAVA 多线程机制(一)
  9. AI学习笔记(七)图像滤波器、OpenCV算法解析
  10. 2018青岛ICPC ZOJ 4063: Tournament(构造)
  11. 字符串函数-STUFF函数
  12. 在线读取office 文件(Word excel 等)
  13. 水面反光如何拍摄_「摄影技巧全解」「水面篇」不一样的水面粼粼波光
  14. C#使用MX Component与三菱PLC建立通讯(以FX5U举例)
  15. 王道操作系统2.2处理机调度摘要
  16. 本地化差分隐私保护的实现机制(一)
  17. asp网站在本地可以添加新闻上传到服务器后字数太多就不能上传,asp 字数
  18. ubuntu解决微信无法输入中文
  19. anaconda安装配置步骤、报错解决
  20. openstack创建实例报Build of instance d401db9e-xxxx-97c5d7685592 aborted: Unknown auth type: None

热门文章

  1. 淘宝开网店靠谱吗?为什么没有销量?那是因为你犯了以下几点
  2. ImageNet Large Scale Visual Recognition Competition (ILSVRC)-ImageNet数据集标签名称中英文对照
  3. 2023程序员今年的一些现状
  4. 13.华为秋招一二面
  5. 太损了!如何禁止小孩玩电脑?
  6. Android列表视图(ListView--SimpleAdapter)学习
  7. 通过Dashboard熟悉并创建云主机
  8. 转载:Android (争取做到)最全的底部导航栏实现方法
  9. 【狂神说】 mysql 自学总结 4~6章
  10. 那时候写计算机毕业论文,必用神器!