Laravel-excel 指定读取的最大列

背景:项目中有在队列中使用Laravel-Excel读取excel的需求,小伙伴发现有些文件会导致队列异常退出,查询发现是用户上传的excel带有1万多列空列导致内存溢出,所以让 Import 类实现了 WithColumnLimit 接口,并定义 endColumn 方法,确定读取的最大的列,直接上代码


<?php

namespace App\Imports;

use App\Models\SettlementFileRow;
use Illuminate\Database\Eloquent\Model;
use Maatwebsite\Excel\Concerns\ToModel;
use Maatwebsite\Excel\Concerns\WithColumnLimit;

class SettlementFileImport implements ToModel, WithColumnLimit
{

    public function model(array $row): array|Model|SettlementFileRow|null
    {
        return new SettlementFileRow($row);
    }

    public function endColumn(): string
    {
        //从A读取到L列,后面的列不再读取
        return 'L';
    }

}

:heavy_exclamation_mark: :heavy_exclamation_mark: 注意, 你的 Import 类,不能实现 SkipsEmptyRows 接口,否则 WithColumnLimit 无效,因为底层判断了只有没实现 SkipsEmptyRows 接口才走 WithColumnLimit 逻辑

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 1

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