laravel5.5 excel的安裝和使用


在項目開發中 最常用的就是把數據導出成excel的文件報表了

然而新下的項目中啥也沒有;沒有excel的擴展

會報這個錯誤

然后你需要通過composer安裝這個依賴

學習源頭:https://www.jianshu.com/p/4a2457efbf91

excel官方文檔:http://laravelacademy.org/post/2024.html

1,使用Composer安裝依賴


在Laravel項目根目錄下使用Composer安裝依賴:

composer require maatwebsite/excel ~2.1

ps:一定要加上~2.1!!!因為現在已經更新到3.0版本了,如果你不加的話,會安裝最新的3.0版本!等運行時候就會報錯,類似下面這樣的報錯

Symfony \ Component \ Debug \ Exception \ FatalThrowableError (E_ERROR)Call to undefined method Maatwebsite\Excel\Excel::create(),


2,安裝后,修改設置

在config/app.php中注冊服務提供者到providers數組:

Maatwebsite\Excel\ExcelServiceProvider::class,


在config/app.php中注冊門面到aliases數組:

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


執行Artisan命令:

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


執行成功后會在config目錄下生成文件excel.php。

修改生成的excel.php文件

大約是在431行,將'to_ascii' => true,改為

'to_ascii' => false,

3、測試Excel文件

創建一個控制器ExcelController.php:

php artisan make:controller ExcelController 


然后在routes.php中定義相關路由:

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

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


然后實現導出、導入功能:

<?php

namespace App\Http\Controllers;

use App\Http\Requests;

use Illuminate\Http\Request;

use App\Http\Controllers\Controller;

use Excel;

class ExcelController extends Controller

{

    public function export()

    {

        $cellData = [

            ['id','姓名','年齡'],

            ['10001','張三','19'],

            ['10002','李四','22'],

            ['10003','王五','23'],

            ['10004','趙六','19'],

            ['10005','猴七','22'],

        ];

        $name = iconv('UTF-8', 'GBK', '成員信息');

        Excel::create($name,function($excel) use ($cellData){

            $excel->sheet('score', function($sheet) use ($cellData){

                $sheet->rows($cellData);

            });

        })->store('xls')->export('xls');

    }

    public function import(){

        $filePath = 'storage/exports/'.iconv('UTF-8', 'GBK', '成員信息').'.xls';

        Excel::load($filePath, function($reader) {

            $data = $reader->all(); dump($data);

        });

        exit;

    }

}


如果你要導出csv或者xlsx文件,只需將export方法中的參數改成csv或xlsx。

store方法,將該Excel文件保存到服務器上,文件默認保存到storage/exports目錄下,iconv()是為了防止文件名中文亂碼。

訪問 http://youdemain/excel/export

訪問 http://youdemain/excel/import

public function extract(Request $request)
    {
        // 請求參數
        $status = $request->status ? $request->status : 4; // status(提取狀態) 4 有效-未提取 6 已提取 未提取指的是標記為有效的
        $data_id = $request->data_id ? $request->data_id : [];
        $all_extract = $request->all_extract ? $request->all_extract : 1; // 默認是普通選擇提取

        $extract_data = $this->getExtData(4, $data_id, 2);
//        return Response::json($extract_data);
//        dd($extract_data);
        $cellData[0] = ['數據編號','撥打時間','通話時長','手機實號'];
        foreach($extract_data as $k=>$v){
            $cellData[$k+1] = [$v->id ? $v->id : '', $v->dial_time ? date('Y-m-d H:i:s', $v->dial_time) : '', $v->time_len ? $v->time_len : '', $v->kh_phone ? $v->kh_phone : ''];
        }
        if ($status == 4) {
            $status_msg = '未提取';
        } else if ($status == 6) {
            $status_msg = '已提取';
        }

        Excel::create("{$status_msg}數據",function($excel) use ($cellData){
            $excel->sheet('score', function($sheet) use ($cellData){
                $sheet->rows($cellData);
            });
        })->export('xls');
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM