Php split/chunk Excel with Maatwebsite Laravel-Excel v.3

标签 php excel maatwebsite-excel

我有非常大的 xlsx 1000000 行,但为了测试,我使用了 999 行的 Excel。所以,为了节省内存,我想从这个文件中获取数据 block 并处理它们。我找到了这个 https://docs.laravel-excel.com/3.1/imports/chunk-reading.html

namespace App\Imports;
use Maatwebsite\Excel\Concerns\ToArray;
use Maatwebsite\Excel\Concerns\WithChunkReading;
class ProducttestImport implements ToArray,WithChunkReading
{
    public function array(array $row): array
    { return $row ; }
    public function chunkSize(): int
    { return 100; }
}

在 Controller 中

myFunc(){
$rows = Excel::toArray(new ProducttestImport(), $path.$excelName)[0];
return  $rows;
}

但似乎我遗漏了什么,因为 $rows 有包含 999 个数组的数组。我需要包含 10 个数组的数组(分块 999 行时)。

我在哪里可以访问/获取这些 block ?

最佳答案

解决方法..

namespace App\Exports;
use Maatwebsite\Excel\Concerns\Exportable;
use Maatwebsite\Excel\Concerns\FromArray;
class ProducttestExport implements FromArray
{use Exportable;
    public $inputArr;

    public function __construct(array $inputArr = [])
    { $this->inputArr = $inputArr; }

    public function array() :array
    {
        if(count($this->inputArr) >0) return $this->inputArr;
        return [];
    }
}

在foreach中

...
Excel::store( new ProducttestExport($array), $key.'_file.xlsx', 'my_disk' );
...

然后一个一个处理文件..

但无论如何我希望有人知道如何获取 block 并发布答案。

关于Php split/chunk Excel with Maatwebsite Laravel-Excel v.3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60195316/

相关文章:

PHP Laravel 读取 csv

laravel - 导出到 Excel 时出现非法偏移类型错误

php - Maatwerk Excel Laravel 如何设置 CSV EXPORT 分隔符?

php - MySQL:通过单词搜索缩短查询时间

php - 计算 MySQL 中 DISTINCT 行的数量

php - 回显时如何从数据库更改字符串的一部分

php - 在哪里可以找到 phpMyAdmin 的 create_tables.sql?

python - 使用Openpyxl读取Excel电子表格数据直至某一行

vba - 如果找到(搜索词),则执行(操作)。如果没有,结束如果

excel - 如何在多列中进行 CountIf 计算?