Laravel 使用 laravel-excel扩展包(maatwebsite/excel)导入报内存溢出

报错如下:

Out of memory (allocated 4194304) (tried to allocate 8453100805601195360 bytes) 

原因

excel 文单元格存在合并了的单元格,导致数组溢出。

处理

去除合并了的单元格,拆分为一行一行的

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 1
laravel_peng

你好,我使用的扩展版本是 "maatwebsite/excel": "^3.1" ,也是发现了这种问题。

  • 我导入的是 100 多行的excel文件,大小为 100K 左右 , 我导入的类实现的是 toModel 的接口。 导入方法里有一些过滤数据查重的逻辑断言,只是不多,但是执行导入的时候就出现了内存溢出的问题。
    Allowed memory size of 1048576000 bytes exhausted (tried to allocate 167772160 bytes) 
  1. 问题的原因: excel 的空白行会被代码读取,但显示大小的时候不算。问题原因解释跳转
    • 解决问题的方法:删除 excel 表格中多余的空白格,右侧以及下侧然后导入。删除方法跳转
    • 但是这种太麻烦,每次导入要操作一个删除空白格的问题。
2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!