首页 > 解决方案 > 使用过滤器(块)给出错误

问题描述

我正在使用 Laravel-Excel 2.1。我正在尝试使用 chunk() 读取导入的大型 Excel 文件,但出现错误“方法 noHeading 不存在”。

我的原始代码

此代码可以正常读取导入的文件。

$column_number = 5;
$rows = Excel::load('storage/app/public/upload/myfiles.xlsx', function($reader) use ($column_number)
{
    $reader->noHeading();
    $reader->takeColumns($column_number);
    $reader->setDateFormat('d-m-Y');

})->get();

在文档中使用块之后

此代码给出Method noHeading does not exist.错误。注意我添加filter('chunk')chunk(250

$column_number = 5;
$rows = Excel::filter('chunk')->load('storage/app/public/upload/myfiles.xlsx')->chunk(250, function($reader) use ($column_number)
{
    $reader->noHeading();
    $reader->takeColumns($column_number);
    $reader->setDateFormat('d-m-Y');

})->get();

标签: phpexcellaravellaravel-excel

解决方案


传递给您的闭包的$reader变量是 的一个实例ExcelParser,而LaravelExcelReader不是没有该noHeading()方法。Excel::filter()确实返回了一个读者,所以你应该能够做到这一点:

$column_number = 5;
$rows = Excel::filter('chunk')
    ->noHeading()
    ->takeColumns($column_number)
    ->setDateFormat('d-m-Y');
    ->load('storage/app/public/upload/myfiles.xlsx')
    ->chunk(250, function($results) {return $results;});

虽然完全未经测试!


推荐阅读