PHP的laravel框架后台實現數據導出excel的功能


要想在PHP后台實現excel導入導出功能,一種簡單有效的方法就是使用phpexcel插件。  

要使用phpexcel插件,首先需要下載composer,這個工具是專門用來管理項目中庫之間的依賴關系的。使用composer下載的phpexcel組件中的類,在項目中的其他文件中都是可以訪問phpexcel的而無需其他use和namespace之類的語句。

$objExcel = new \PHPExcel();注意在調用這個類,新建的時候要加上\,系統會自動定位到phpexcel.php這個文件中去拿到這個類。

 在下載composer.phar這個文件的時候,最好翻牆,不翻牆下載十次失敗十次,翻牆后1秒1M,一秒下好。

composer下載地址:https://getcomposer.org/download/

強烈推薦翻牆后再下載。如果沒有能力翻牆可以聯系我,看到后郵箱發給你。

下載好composer.phar后,我們對它進行全局配置。我用的是win8系統,所以這里只講Windows系統下的全局配置。我使用的是xampp工具包,wamp也一樣。將composer.phar放入與php.exe相同的文件夾里。我的是C:\xampp\php。同時在這個文件夾下新建一個名為composer的文本文檔,里面寫進:@php "%~dp0composer.phar" %*

之后將這個文本文件的擴展名txt改為bat。

添加完成上述步驟后,再將該路徑添加到系統的環境變量中。win8操作方法如下:我的電腦->右擊->屬性->高級系統設置->環境變量->雙擊path->在變量值中添加;C:\xampp\php

這是我的composer所在的路徑,你注意添加的路徑是你自己的路徑,而不是這里的示例。

進行到這里,composer全局配置便完成了。為了驗證我們真的完成了composer的全局配置,可在命令行里的任意路徑下輸入composer,若命令行里打印出了composer大字,便說明我們全局配置成功了。

之后,我們需要composer從中國鏡像網下載資源,而不是原本的外網。我也試圖使用composer從外網下載所需的資源,結果不管翻不翻牆都下載失敗,所以對composer進行配置使它從國內鏡像網下載資源是很有必要的一件事情。

方法可參考這里:https://pkg.phpcomposer.com/

我簡單講解一下使用國內鏡像配置。在命令行使用cd C:\xampp\htdocs\laravelDemo     你注意這里改成你自己的項目根目錄。

 然后在命令行的根目錄下輸入 

composer config repo.packagist composer https://packagist.phpcomposer.com

 回車后,配置便完成了。此時打開項目跟目錄下的composer.json文件會發現里面增加了這部分內容:

當然你也可以手動在這個文件中添加這些內容。

 到此我們便完成了composer的配置可以使用它來下載phpexcel組件了。可以參考這里的內容:http://www.tuicool.com/articles/ziY7Vv

使用Composer安裝依賴

首先在Laravel項目根目錄下使用Composer安裝依賴:在命令行項目的根目錄下操作

composer require maatwebsite/excel ~2.0.0

安裝后在項目中的設置:

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

Maatwebsite\Excel\ExcelServiceProvider::class,

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

'Excel' => Maatwebsite\Excel\Facades\Excel::class,
至此便可以在項目中使用phpexcel組件了。
附上使用例程。

導出Excel文件

為了演示Laravel Excel相關功能,我們為本測試創建一個干凈的控制器 ExcelController.php

php artisan make:controller ExcelController --plain

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

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

接下來我們先在 ExcelController.php 中定義 export 方法實現導出功能:

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Http\Requests; use App\Http\Controllers\Controller; use Excel; class ExcelController extends Controller { //Excel文件導出功能 By Laravel學院 public function export(){ $cellData = [ ['學號','姓名','成績'], ['10001','AAAAA','99'], ['10002','BBBBB','92'], ['10003','CCCCC','95'], ['10004','DDDDD','89'], ['10005','EEEEE','96'], ]; Excel::create('學生成績',function($excel) use ($cellData){ $excel->sheet('score', function($sheet) use ($cellData){ $sheet->rows($cellData); }); })->export('xls'); } } 

我們在瀏覽器中訪問 http://laravel.app:8000/excel/export ,會導出一個名為 學生成績.xls 的Excel文件:

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

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

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

文件默認保存到 storage/exports 目錄下,如果出現文件名中文亂碼,將上述代碼文件名做如下修改即可:

iconv('UTF-8', 'GBK', '學生成績')

導入Excel文件

我們將剛才保存到服務器上的Excel文件導入進來,導入很簡單,使用 Excel 門面上的 load方法即可:

//Excel文件導入功能 By Laravel學院
public function import(){ $filePath = 'storage/exports/'.iconv('UTF-8', 'GBK', '學生成績').'.xls'; Excel::load($filePath, function($reader) { $data = $reader->all(); dd($data); }); }

load 方法基於項目根路徑作為根目錄,同樣我們對中文進行了轉碼,否則會提示文件不存在。

在瀏覽器中訪問 http://laravel.app:8000/excel/import ,頁面顯示如下:

當然,Laravel Excel還有很多其它功能,比如將Blade視圖導出為Excel或CSV,以及對導入/導出更加細粒度的控制,具體可參考其官方文檔: http://www.maatwebsite.nl/laravel-excel/docs

例程中的路由控制器注意要用自己的url路徑。
 


免責聲明!

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



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