- 广场
-
- 搜索中...
- 本文档内搜索
zxf/tools 使用手册
导入 Excel
文档
文档:https://laravel-excel.com/
github:https://github.com/SpartnerNL/Laravel-Excel
安装
Laravel-Excel
composer require maatwebsite/excel
导入EXCEL为数组
$file = $request->file('file');
// $file 参数可以是$request->file('xxx'),也可以是文件路径 /path/to/file.xlsx
$export = \zxf\Office\Excel\Import::init($file);
// 验证文件
// 不论上传的文件名称是什么,在`validateFile`都使用`file`作为文件名进行验证
$export->validateFile(function () {
$rule = [
'file' => 'required|file|max:2048|mimes:xlsx,xls,csv', // 文件最大2MB,仅限 xlsx, xls,csv 格式
];
$messages = [
'file.required' => '文件不能为空',
'file.max' => '文件大小不得超过2MB',
];
return [$rule, $messages];
});
// 是否使用Excel列名作为数组的键名,默认为false,如果调用了setColumnMapping()方法,会自动设置为true
$export->useExcelColumnName(true);
// 使用列名映射 把A列映射为name,B列映射为email, 使用字段映射时没有设置映射的列会被忽略
$export->setColumnMapping([
'A' => 'name',
'B' => 'email'
]);
// 读取Excel数据 范围:
// 第0张表读取第0~50行的内容,第1张表读取第8~400行的内容
$export->setReadRange(0,0,50)->setReadRange(1,8,400);
// 验证每行数据
$export->validateRow(function ($row, $rowIndex, $sheetIndex, $sheetName) {
// $row: 当前验证行的数据
// $rowIndex: 当前验证行的行号,从0开始
// $sheetIndex: 当前验证的sheet表id,从0开始
// $sheetName: 当前验证的sheet表名称
// 验证方式一、直接返回 错误消息字符串
return "「{$sheetName}」第{$rowIndex}行的邮箱号格式错误";
// 验证方式二、返回验证器规则和错误消息数组
$rules = [
// 这里键值可能是数字(第n列)、英文字母(列名 eg:A,B,C...)或自定映射名称(通过 setColumnMapping 方法定义)
'name' => 'required|min:2|max:25', // 文件最大2MB,仅限 xlsx, xls,csv 格式
];
$messages = [
'name.required' => '姓名不能为空',
'name.min' => '姓名至少2个字',
'name.min' => '姓名不能超过25个字',
];
return [$rules,$messages];
});
return response()->json(['data' => $export->toArray()]);