使用过滤器(块)会出错

问题描述 投票:1回答:2

我正在使用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();
php excel laravel laravel-excel
2个回答
0
投票

传递给你的闭包的$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;});

完全没有经过考验!


-2
投票

我想你需要更新你的代码,如下所示,

$column_number = 5;
$rows = Excel::filter('chunk')->load('storage/app/public/upload/myfiles.xlsx')->chunk(250, function($data) use ($column_number)
 {
     foreach($data as $reader){
       $reader->noHeading();
       $reader->takeColumns($column_number);
       $reader->setDateFormat('d-m-Y');
     }
 })->get();
© www.soinside.com 2019 - 2024. All rights reserved.