laravel框架——Excel导入导出

一、composer安装PHPExcel插件

 1、在框架根目录下安装依赖

composer require "maatwebsite/excel:~2.1.0"

2、打开框架在config/app.php中注册服务提供者到providers数组:

Maatwebsite\Excel\ExcelServiceProvider::class,

3、打开框架在config/app.php中注册门面到aliases数组:

'Excel' => Maatwebsite\Excel\Facades\Excel::class,

4、建议生成Laravel Excel的配置文件,使用如下命令:

php artisan vendor:publish --provider="Maatwebsite\Excel\ExcelServiceProvider"

然后你会发现在config目录下有一个excel.php文件 
你可以打开看一下大概的配置项,主要就是缓存,表单,和导入,导出的一些设置

二、导出文件

1、打开web.php文件创建两个路由

Route::any('excel/export','ExcelController@export');
Route::any('excel/import','ExcelController@import');

2、创建控制器ExcelController.php文件

3、导出的方法

<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Excel;

class ExcelController extends Controller
{
    public function show()
    {
        return view('Excel/exe');
    }
    //Excel文件导出功能
    public function export()
    {
        $cellData = [
            ['编号','姓名','绩效','电话号码'],
            ['10001','AAAAA','99','150-xxxx-xxxx'],
            ['10002','BBBBB','92','137-xxxx-xxxx'],
            ['10003','CCCCC','95','157-xxxx-xxxx'],
            ['10004','DDDDD','89','177-xxxx-xxxx'],
            ['10005','EEEEE','96','188-xxxx-xxxx'],
            ['10006','FFFFF','96','180-xxxx-xxxx'],
            ['10007','ggggg','96','181-xxxx-xxxx'],
            ['10008','HHHHH','96','182-xxxx-xxxx'],
        ];
        /*
         * 如果你要导出csv或者xlsx文件,只需将 export 方法中的参数改成csv或xlsx即可。
         * 如果还要将该Excel文件保存到服务器上,可以使用 store 方法:
         */
        Excel::create(iconv('UTF-8', 'GBK', '模板文件'),function($excel) use ($cellData){
            $excel->sheet('score', function($sheet) use ($cellData){
                $sheet->rows($cellData);
            });
        })->store('xls')->export('xls');
    }
}

上述代码释义:

a. ini_set设置内存溢出大小和超时时间是因为我的数据量比较大,不想直接去php.ini中修改,所以直接在这设置。你也可以修改excel.php配置项中的缓存大小,适当调整。
b. 首先你得需要知道cellData是一个二维数组,并且二维数组中的每一个一维数组必须是索引数组才行,这样格式上才能正确。

三、导入文件

//Excel文件导入功能
    public function import()
    {
        $filePath = 'storage/exports/'.iconv('UTF-8', 'GBK', '用户信息').'.xls';
        Excel::load($filePath, function($reader) {
            $data = $reader->all();
            dd($data);
        });
    }

 

posted @ 2019-04-10 19:13  你的男孩  阅读(1822)  评论(0编辑  收藏  举报