日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

laravel 导出插件

發布時間:2023/11/29 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 laravel 导出插件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉發:https://blog.csdn.net/gu_wen_jie/article/details/79296470

版本:laravel5

? ? ? ? ? php 5.6

安裝步驟:

一、安裝插件

①、首先在Laravel項目根目錄下使用Composer安裝依賴:

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文件?
你可以打開看一下大概的配置項,主要就是緩存,表單,和導入,導出的一些設置。

?

二、使用

①、創建路由:

//Excel導出 Route::get('/excel/export','Member\MemberController@export')->name('/excel/export');

//Excel導入 Route::get('/excel/import','Member\MemberController@import')->name('/excel/import');?

1-1、導出的方法:

<?phpnamespace App\Http\Controllers\Member;use App\Http\Controllers\BaseController; use App\Model\Member\MemberFollow; use Illuminate\Http\Request; use Illuminate\Database\QueryException; use Excel;class MemberController extends BaseController {/**** Excel導出*/public function export(){ini_set('memory_limit','500M');set_time_limit(0);//設置超時限制為0分鐘$cellData = MemberFollow::select('xt_name','sex','face')->limit(5)->get()->toArray();$cellData[0] = array('昵稱','性別','頭像');for($i=0;$i<count($cellData);$i++){$cellData[$i] = array_values($cellData[$i]);$cellData[$i][0] = str_replace('=',' '.'=',$cellData[$i][0]);}//dd($cellData);Excel::create('用戶信息',function($excel) use ($cellData){$excel->sheet('score', function($sheet) use ($cellData){$sheet->rows($cellData);});})->export('xls');die;} }

我來對上面的代碼進行解釋下。
a. ini_set設置內存溢出大小和超時時間是因為我的數據量比較大,不想直接去php.ini中修改,所以直接在這設置。你也可以修改excel.php配置項中的緩存大小,適當調整。
b. 首先你得需要知道cellData是一個二維數組,并且二維數組中的每一個一維數組必須是索引數組才行,這樣格式上才能正確。
所以,我對我查詢出的$cellData先進行了toArray()轉化操作。然后我讓你看下查詢出的結構,因為我們數組表中的每個列都是一個字段,所以決定了一維數組是關聯數組,需要去鍵處理。

for循環處理后就是:

?

??for循環中的另一個
php
$cellData[$i][0] = str_replace('=',' '.'=',$cellData[$i][0]);

這個地方是比較坑的一個地,因為Excel單元格當你的導出數據中某個列的某個值第一個字符是等號“=”,他就會進行計算處理,然后就報錯了。比如我到處的某個昵稱是“=陽光”,我就吧等號匹配替換為空格加等號了
其實本不需要進行匹配替換的,因為在excel.php文件中有配置項,但是我配置了并不生效,后續找到更好的解決方法會及時更新,或者有哪位知道了可以指點一下。 ?

/*|--------------------------------------------------------------------------| Calculate|--------------------------------------------------------------------------|| By default cells with formulas will be calculated.|*/'calculate' => false,--------------------- 作者:谷谷谷 來源:CSDN 原文:https://blog.csdn.net/gu_wen_jie/article/details/79296470?utm_source=copy 版權聲明:本文為博主原創文章,轉載請附上博文鏈接!

  

默認情況下,計算公式的單元格將被計算。我設置為false沒生效。所以匹配替換。

如果你要導出csv或者xlsx文件,只需將export方法中的參數改成csv或xlsx即可。也可以進行連貫操作直接將導出的文件直接保存到服務器上。?
使用store方法:

Excel::create('用戶信息',function($excel) use ($cellData){$excel->sheet('score', function($sheet) use ($cellData){$sheet->rows($cellData);});})->store('xls')->export('xls');--------------------- 作者:谷谷谷 來源:CSDN 原文:https://blog.csdn.net/gu_wen_jie/article/details/79296470?utm_source=copy 版權聲明:本文為博主原創文章,轉載請附上博文鏈接!

  ok,導出完成。

?

2-1 導入:

導入我們可以直接用第一步注冊的門面Excel門面上的load方法

/**** Excel導入*/public function import(){$filePath = 'storage/exports/'.iconv('UTF-8', 'GBK', '用戶信息').'.xls';Excel::load($filePath, function($reader) {$data = $reader->all();dd($data);});}

  ok,導入完成。

?

轉載于:https://www.cnblogs.com/sz-xioabai/p/9765382.html

總結

以上是生活随笔為你收集整理的laravel 导出插件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。