Lumen中使用 maatwebsite/excel~3.1導出
此文引用作者:
(如有意見聯系即可刪除)
好久沒有用maatwebsite/excel都出3.1了,看着完全一臉懵,度娘上也全是2.1的教程,先來個簡單的導入導出練練手!
一、導出excel文件
- 安裝 maatwebsite/excel默認就是安裝3.1
composer require maatwebsite/excel
- 在bootstrap/app.php中加入
$app->register(Maatwebsite\Excel\ExcelServiceProvider::class);
- 在app目錄下創建導出類的目錄Exports -> app/Exports
- 在Exports目錄中創建 InvoicesExport.php文件,我這里使用的是 將數據從控制器傳遞到導出,導出的數據格式是什么樣完全由控制器決定
<?php namespace App\Exports; use App\Invoice; use Maatwebsite\Excel\Concerns\FromArray; class InvoicesExport implements FromArray { protected $invoices; public function __construct(array $invoices) { $this->invoices = $invoices; } public function array(): array { return $this->invoices; } }
- 在控制器中就可以開始操作啦
use App\Exports\InvoicesExport; use Maatwebsite\Excel\Facades\Excel; public function exportExcel(){ $arr = [ ['姓名', '地址', '性別',可加字段'], [4, 5, 6],
[這里就是你的數據庫對應字段數據] ]; $export = new InvoicesExport($arr); $bool = Excel::download($export, 'invoices.xlsx';); return $bool; }
注:這個單個下載在瀏覽器沒有問題,由於我們有個需求多個文件下載,在前端將每個流壓縮成一個文件包下載實現,因為在后端實現給服務器增加一點壓力(也是可以做的)。
前端打包下載后出現一個文件打開出現文件破損問題,打不開。這個時有誤流文件里面有亂碼問題。
解決辦法:
$bool = Excel::download($export, '考勤信息.xlsx', \Maatwebsite\Excel\Excel::XLSX);
在后面跟上返回的格式就可以了。格式有很多種可以根據自己的需求更改:
支持的格式有:
XLSX
CSV
TSV
ODS
XLS
SLK
XML
GNUMERIC
HTML
MPDF
DOMPDF
TCPDF