https://blog.csdn.net/yiluohan0307/article/details/80229978
http://www.ptbird.cn/laravel-excel-csv.html
项目需要从 csv 中导入数据并且写入到数据表中。
因为使用 Laravel 框架,因此就直接用了
Laravel-Excel
进行数据的读写操作。
网上关于 Laravel-Excel 的使用方法有很多,比较推荐的是在 laravel学院上的一篇:
在 Laravel 5 中使用 Laravel Excel 实现 Excel/CSV 文件导入导出功能
Laravel-Excel
文档地址:
https://laravel-excel.maatwebsite.nl/docs/2.1/getting-started/installation
注意事项:
目前 Laravel-Excel 已经到了 3.0 版本,不再基于
PHPExcel
,而是使用
PhpSpreadsheet
。
但是现在 3.0 版本不能 import ,只能 export ,所以如果想要导入 excel/csv 只能使用 2.0 版本。
import 功能将在 3.1 版本加入(应该是能够等到的,我写文章的时候,9 days ago 作者还在 push 代码:
https://github.com/Maatwebsite/Laravel-Excel/
)。
二、安装配置 laravel-excel
我使用的是 laravel 5.6 版本:(laravel-excel 3.0 只能是 ^5.5 版本),安装的是
~2.1.0
Laravel 4 版本应当安装:
~1.3
1. 安装
composer require maatwebsite/excel ~2.1.0
2. 配置 config/app.php
在
providers
数组中添加:
Maatwebsite\Excel\ExcelServiceProvider::class,
在
aliases
数组中添加:
'Excel' => Maatwebsite\Excel\Facades\Excel::class,
3. 导出 Excel.php 配置文件
php artisan vendor:publish
这里可能会需要选择某个 tag 进行导出,根据需要输入要导出的配置文件的 tag 即可
三、导入 Excel
因为是使用的文件上传功能,因此将文件存储也加上去了。
因为
$path
得到的文件地址没有
storage/app/
,因此需要加上。
这里需要注意的是,laravel-excel 的 load 使用的 path 参数,是本地文件的目录,因此只需要给出本地文件目录地址即可,与 web 目录无关。
关键的方法:
$data = Excel::load($path, function ($reader) {}, 'GBK')->get();
我是使用的
get()
方法来获取数据,除此之外,也可以在回调函数中获取,但是没办法回调什么的
Excel::load($path,function($reader){
$data = $reader->all();
dd($data);
非学,无以致疑;非问,无以广识