Laravel框架 的 Excel 導入 和 導出 (新手踏坑成功)

1. 安裝Laravel框架導入導出Excel表擴展: 

                           方法一 : 網速給力,沒有發生意外的話使用:composer require maatwebsite/excel

                            方法二:我是用的方式: composer.json 裏面的require中添加拓展包:"maatwebsite/excel": "~2.1" 然後運行composer update命令。

  不推薦使用 方法一 進行安裝,因爲2.1以後的擴展版本 都不支持 laravel框架的 Excel的導入導出,執行方法一的命令是默認安裝最新版本(3.1)的擴展插件。 所以推薦使用方法二來手動設置一下版本。 

2.安裝後的設置

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

                  Maatwebsite\Excel\ExcelServiceProvider::class,

同樣在config/app.php中註冊門面到aliases數組:

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

如果想要對Laravel Excel進行更多的自定義配置,執行如下Artisan命令:

                      php artisan vendor:publish

執行成功後會在config目錄下生成一個配置文件excel.php

 

(1) 首先實現  比較  簡單的  Excel導出:                          

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;

use Excel;  //這裏是全局的,可以使用全地址。

class ExcelController extends Controller
{

    public function export(){
        $cellData = [
            ['學號','姓名','成績'],
            ['10001','AAAAA','99'],
            ['10002','BBBBB','92'],
            ['10003','CCCCC','95'],
            ['10004','DDDDD','89'],
            ['10005','EEEEE','96'],
        ];

/*怎麼將自己的數據整理成上邊的形式:

$students = Student::where($array)->paginate(10); //分頁的形式獲取數據。

$cellData = [

['學號','姓名','成績'],

];

foreach ($students as $student) {

array_push($cellData, [ $student->studentid , $student->name , $student->grade ]);

}

*/ 
       
Excel::create('學生成績',function($excel) use ($cellData){
            $excel->sheet('score', function($sheet) use ($cellData){
                $sheet->rows($cellData);
            });
        })->export('xls');
    }
}

/*如果還要將該Excel文件保存到服務器上,可以使用store方法:

Excel::create('學生成績',function($excel) use ($cellData){
     $excel->sheet('score', function($sheet) use ($cellData){
         $sheet->rows($cellData);
     });
})->store('xls')->export('xls'); //文件默認保存到storage/exports目錄下.
*/

(1) Excel導入 到 MySQL數據庫(需要注意的比較多,坑比較多):

(1)首先配置一下: 無法讀取excel中中文表頭列數據:修改config目錄excel.php的配置文件 :  'to_ascii' => false,

(2)這種方法是:先將本地的Excel表格 保存到 laravel項目下的storage目錄下的import.xls文件中,然後再通過Eloquent來操作MySQL數據庫:

use Excel ;
public function upload(Request $request){
    $url = $request->file("file")->storeAs('public','import.xls');
    if($url){
        $filePath = "storage/import.xls";
       Excel::load($filePath, function($reader) {
            $data = $reader->all();
            foreach ($data as $item){
                Eloquent表達式 操作 數據庫。
            }
        });
    }
}

(3)要創建這個軟鏈,可以使用 Artisan 命令 storage:link :

php artisan storage:link

資料相關連接: https://blog.csdn.net/Bepthslowly/article/details/88615572

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章