laravel框架——Excel導入導出

1、composer安裝PHPExcel插件php

 一、在框架根目錄下安裝依賴web

composer require "maatwebsite/excel:~2.1.0"

二、打開框架在config/app.php中註冊服務提供者到providers數組:數組

Maatwebsite\Excel\ExcelServiceProvider::class,

三、打開框架在config/app.php中註冊門面到aliases數組:緩存

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

四、建議生成Laravel Excel的配置文件,使用以下命令:服務器

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

而後你會發如今config目錄下有一個excel.php文件 
你能夠打開看一下大概的配置項,主要就是緩存,表單,和導入,導出的一些設置app

2、導出文件composer

一、打開web.php文件建立兩個路由框架

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

二、建立控制器ExcelController.php文件ide

三、導出的方法ui

<?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是一個二維數組,而且二維數組中的每個一維數組必須是索引數組才行,這樣格式上才能正確。

3、導入文件

//Excel文件導入功能
    public function import()
    {
        $filePath = 'storage/exports/'.iconv('UTF-8', 'GBK', '用戶信息').'.xls';
        Excel::load($filePath, function($reader) {
            $data = $reader->all();
            dd($data);
        });
    }
相關文章
相關標籤/搜索