批处理和分块excel文件(Laravel Maatwebsite库)

时间:2017-09-26 03:13:37

标签: php excel laravel csv maatwebsite-excel

根据documentation,您可以使用批处理来加载文件。如果是大文件,您也可以对数据进行分块。

组块:

Excel::filter('chunk')->load('file.csv')->chunk(250, function($results)
{
        foreach($results as $row)
        {
            // do stuff
        }
});

批量导入:

Excel::batch('app/storage/uploads', function($rows, $file) {

    // Explain the reader how it should interpret each row,
    // for every file inside the batch
    $rows->each(function($row) {

        // Example: dump the firstname
        dd($row->firstname);

    });

});

我有一系列大文件,我想知道是否可以将这两个函数链接在一起。问题是两个函数都需要2个变量(第二个是_callback),关于如何将它们链接起来我很遗憾。

现在似乎对我来说唯一有用的东西是这样的,但我怀疑它确实做了什么:

Excel::filter('chunk')->batch('files', function($rows, $file){

1 个答案:

答案 0 :(得分:0)

这应该有效:

Excel::batch(request()->file, function($rows, $file) {
                Excel::filter('chunk')->selectSheetsByIndex(0)->load($file)->chunk($this->chunkSize, function($results) {

                    foreach ($results as $row) {

                    }            
                }, $this->shouldQueue);
            });

您可以定义chunkSize和shouldQueue值。