1

根据文档,您可以使用批处理来加载文件。您还可以在大文件的情况下分块数据。

分块:

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){
4

1 回答 1

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 值。

于 2018-07-18T12:36:28.760 回答