shh*_*rzl 3 php laravel laravel-excel maatwebsite-excel
我已将 Maatwebsite/Laravel-Excel 从 2.1 升级到 3.1。某些方法已被弃用。
这是 2.1 版的代码。
$data = Excel::load($path, function($reader) {})->get()->toArray();
Run Code Online (Sandbox Code Playgroud)
当我使用 2.1 时它可以工作,但升级后,它是错误的
调用未定义的方法 Maatwebsite\Excel\Excel::load()
对于 3.1 版,我尝试更改为
$data = Excel::import($path, function($reader) {})->get()->toArray();
Run Code Online (Sandbox Code Playgroud)
我知道这可能不是正确的语法。
这是我使用 2.1 开发时的完整代码。
$path = $request->file('csv_file')->getRealPath();
if ($request->has('header')) {
$data = Excel::import($path, function($reader) {})->get()->toArray();
} else {
$data = array_map('str_getcsv', file($path));
}
if (count($data) > 0) {
if ($request->has('header')) {
$csv_header_fields = [];
foreach ($data[0] as $key => $value) {
$csv_header_fields[] = $key;
}
}
$csv_data = array_slice($data, 0, 8);
$csv_data_file = CsvData::create([
'csv_filename' => $request->file('csv_file')->getClientOriginalName(),
'csv_header' => $request->has('header'),
'csv_data' => json_encode($data)
]);
} else {
return redirect()->back();
}
return view('import.import_field', compact( 'csv_header_fields', 'csv_data', 'csv_data_file'));
Run Code Online (Sandbox Code Playgroud)
如何在 3.1 版上修复此错误?
小智 6
实际上,在 Maatwebsite/Laravel-Excel 版本 3 中,不需要为 Excel 导入创建任何额外的类。基本上,您可以以与版本 2 中几乎相同的方式进行整个 CSV 到数组的转换:
$path = $request->file('csv_file')->getRealPath();
$data = \Excel::toArray('', $path, null, \Maatwebsite\Excel\Excel::TSV)[0];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7636 次 |
| 最近记录: |