Laravel使用Maatwebsite Excel从数组导出Excel返回空文件如何解决?
问题原因
- 自定义导出类未实现类库要求的对应契约:Maatwebsite Excel v3及以上版本,从数组生成Excel的导出类必须实现
Maatwebsite\Excel\Concerns\FromArray接口,否则类库无法识别数据源读取规则。 - 传参时多嵌套了一层数组:你定义的
$ex本身就是符合要求的二维数组,new TestExport([$ex])的写法把数据源变成了三维数组,结构不匹配导致无法读取内容。
修复步骤
- 修改
TestExport类,引入并实现FromArray接口:
use Maatwebsite\Excel\Concerns\FromArray; class TestExport implements FromArray { protected $arrays; public function __construct(array $arrays) { $this->arrays = $arrays; } public function array(): array { return $this->arrays; } }
- 修改业务代码中实例化导出类的逻辑,去掉多余的数组包裹:
use Maatwebsite\Excel\Facades\Excel; $ex = [ ['one', 'name'], ['two', 'family'] ]; // 移除$ex外层的多余数组包裹 return Excel::download(new TestExport($ex), 'test.xlsx');
修改完成后重新触发导出逻辑,即可正常生成带内容的Excel文件。
内容的提问来源于stack exchange,提问作者Rez Mohsnei
相关产品推荐
相关产品推荐

