需求:项目需要excel导入功能
Laravel Excel 在 Laravel 5 中集成 PHPOffice 套件中的 PHPExcel ,从而方便我们以优雅的、富有表现力的代码实现Excel/CSV文件的导入和 导出
方法
1、安装配置:
使用Composer安装依赖
首先进入Laravel项目根目录下使用Composer安装依赖:
composer require maatwebsite/excel=~2.1.0
2、安装后的设置
在 config/app.php 中注册服务提供者到 providers 数组:
MaatwebsiteExcelExcelServiceProvider::class,
同样在 config/app.php 中注册门面到 aliases 数组:
'Excel' => MaatwebsiteExcelFacadesExcel::class,
如果想要对Laravel Excel进行更多的自定义配置,执行如下Artisan命令:
php artisan vendor:publish
执行成功后会在 config 目录下生成一个配置文件 excel.php 。
3、excel.php文件修改
修改:
‘to_ascii’ => true,// 改为false,中文不用转码
'heading' => 'slugged',//读取excel第一行作为数组的键名,第二行开始作为数组的值
//如果'heading'=>false,//读取excel第一行作为数组,键名为数字
4、控制器方法
添加好自己项目的路由后:在控制器中创建import方法,代码如下
<?php
namespace App\Http\Controllers\Admin;
use App\Enum\ApplyClueEnum;
use App\Logic\Admin\ApplyClueLogic;
use App\Models\ApplyClue;
use Carbon\Carbon;
use Illuminate\Http\Request;
use Maatwebsite\Excel\Facades\Excel;
class ApplyClueCheckController extends ApiController
{
public $permission = 'apply_clue_check';
public $zh_name = '普通线索审核';
public function import(Request $request)
{
set_time_limit(0);
//导出
/*$cellData = [
['id','name','sex','电话号码'],
['1','张三','1','180-xxxx-xxxx'],
];
//如果你要导出csv或者xlsx文件,只需将export方法中的参数改成csv或xlsx即可。
//如果还要将该Excel文件保存到服务器上,可以使用store方法
//文件默认保存到storage/exports目录下,如果出现文件名中文乱码,将上述代码文件名做如下修改即可:
Excel::create(iconv('UTF-8', 'GBK', '线索模板文件'),function($excel) use ($cellData){
$excel->sheet('score', function($sheet) use ($cellData){
$sheet->rows($cellData);
});
})->store('xls')->export('xls');*/
//导入
// $filePath = 'storage/exports/'.iconv('UTF-8', 'GBK', '线索模板文件').'.xls';
// $filePath ='storage/exports/xjl_apply_clue.xls';
$filePath = $request->file('excel');//文件上传
Excel::load($filePath, function ($reader) {
$data = $reader->all();
dump($reader->toArray());
// dd($data);
});
return '导入成功';
exit;
}
}