我正在使用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();
传递给你的闭包的$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;});
完全没有经过考验!
我想你需要更新你的代码,如下所示,
$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();