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

报错如下:

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

原因

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

处理

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

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 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年前 评论

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