laravel 实现Excel/csv 文件导出导入
发布时间:2018-12-18 09:58:01作者:wangjian浏览量:883点赞量:0
一:安装maatwebsite/excel拓展
composer require "maatwebsite/excel:~2.1.0"
二:配置
1:在config/app.php中
providers数组中添加:
Maatwebsite\Excel\ExcelServiceProvider::class,
aliases数组中添加:
'Excel' => Maatwebsite\Excel\Facades\Excel::class,
2:如果想要对Laravel Excel进行更多的自定义配置,执行如下Artisan命令
php artisan vendor:publish --provider="Maatwebsite\Excel\ExcelServiceProvider"
这时候会在config目录下新增一个excel.php文件
三:Excel/csv文件导出
$user = User::select('user_no','user_name','create_time')->get()->toArray();
$header = ['用户编号','用户名称','创建时间'];
array_unshift($user,$header);//向$user数组头部追加header
//$user的数据结构如:
/*$user = [
['用户编号','用户名称','创建时间'],
['001','A','2018-12-16 11:36:45'],
['002','B','2018-12-17 11:36:45'],
];*/
//用户表是导出的文件名称
//xls表示导出的文件格式可以使xls,xlsx,csv
Excel::create('用户表',function($excel) use ($user){
$excel->sheet('score', function($sheet) use ($user){
$sheet->rows($user);
});
})->export('xls');
四:导入excel/csv文件并读取文件内容
1:导入Excel/csv文件可以参考:laravel 实现文件上传
2:将服务器生成的excel/csv文件保存到服务器
$user = User::select('user_no','user_name','create_time')->get()->toArray();
$header = ['用户编号','用户名称','创建时间'];
array_unshift($user,$header);//向$user数组头部追加header
//$user的数据结构如:
/*$user = [
['用户编号','用户名称','创建时间'],
['001','A','2018-12-16 11:36:45'],
['002','B','2018-12-17 11:36:45'],
];*/
//用户表是保存在服务器上的文件名称
//xls表示导出的文件格式可以使xls,xlsx,csv
Excel::create('用户表',function($excel) use ($user){
$excel->sheet('score', function($sheet) use ($user){
$sheet->rows($user);
});
})->store('xls');
这时候执行会报错,这是应为文件名中文乱码问题,将文件名改为:
iconv('UTF-8', 'GBK', '用户表')
这时候在次执行后会在storage/exports目录下生成一个对应的Excel文件,你还可以边将Excel/csv文件导出边将Excel/csv文件保存在服务器上
只需要在->store('xls')后面加上->export('xls')即可
配置Excel文件保存的地址在config/excel.php文件中:
3:读取Excel/csv文件内容
$filePath = 'storage/exports/2018-12-18.xls';//要读取的文件地址
Excel::load($filePath, function($reader) {
//$data = $reader->all();//获取数据对象
$data = $reader->toArray();//获取数据数组
dd($data);
});
执行上述命令之后发现只能读取到最后一列的数据
解决方法:
需要配置 config/excel.php
将
'to_ascii' => true,
修改为:
'to_ascii' => false,
Laravel Excel官方学习网站:https://laravel-excel.maatwebsite.nl/
下一篇:laravel 实现文件上传