laravel - Laravel:使用 Maatwebsite Excel 导入 Csv 文件
问题描述
我想使用Maatwebsite\Excel
. 当我上传Excel
文件时,它工作正常,但是当我尝试上传 csv 文件时,我遇到了错误Undefined offset: 1
。
我认为的问题是 csv 文件的分隔符(分隔符是 a ;
),当我var_dump($row)
的 excel 文件我有这个结果array(3) { [0]=> string(8) "user1CSV" [1]=> string(11) "a@gmail.com" [2]=> string(9) "azerty&23" }
但 csv 文件的结果是array(1) { [0]=> string(31) "user1CSV;a1@gmail.com;azerty&23" }
.
如何将分隔符设置为接受Excel
和Csv
分隔符?我的代码是:
控制器
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Maatwebsite\Excel\Facades\Excel;
use App\Imports\UsersImport;
class UserController extends Controller
{
/**
* @return \Illuminate\Support\Collection
*/
public function fileImportExport()
{
return view('file-import');
}
/**
* @return \Illuminate\Support\Collection
*/
public function fileImport(Request $request)
{
Excel::import(new UsersImport, $request->file('file')->store('temp'));
return back();
}
}
导入类
class UsersImport implements ToModel
{
/**
* @param array $row
*
* @return \Illuminate\Database\Eloquent\Model|null
*/
public function model(array $row)
{
var_dump($row);
return new User([
'name' => $row[0],
'email' => $row[1],
'password' => Hash::make($row[2])
]);
}
}
解决方案
在您的config/excel.php
文件中,您可以delimiter
在csv
数组中设置为;
您可以在此处查看完整config/excel.php
文件:https ://github.com/Maatwebsite/Laravel-Excel/blob/3.1/config/excel.php
在第 45 行有一个csv.delimiter
设置,,
默认设置。您只需将其更改为;
https://github.com/Maatwebsite/Laravel-Excel/blob/3.1/config/excel.php#L45
如果要为每个 Import 类设置自定义 csv 设置;正如我从 Laravel Excel 文档中看到的,您可以设置自定义 csv 分隔符:https ://docs.laravel-excel.com/3.1/imports/custom-csv-settings.html#available-settings
在您的app\Imports\UsersImport.php
文件中,您可以通过添加以下方法将您的设置delimiter
为:;
public function getCsvSettings(): array
{
return [
'delimiter' => ";"
];
}
推荐阅读
- json - 从 VBoxManage 输出解析冒号分隔的表格数据
- python - 使用类创建游戏菜单
- bash - 可以期望脚本从标准输入读取数据吗?
- python - 当我加载的 csv 数据是数字时,为什么会出现数字错误?
- algorithmic-trading - 无法弄清楚如何让我的 pine 脚本代码拥有三个不同的时间表来评估
- java - 如何在 Spring Boot 中列出所有托管的 @Component?
- python - 截取屏幕截图并将其作为电子邮件附件发送
- binary-search - 二分查找实现条件混淆
- angular-in-memory-web-api - “集合 id 类型为非数字或未知。只能生成数字 id。”
- python - Python 3 中有效源字符的范围是多少?