如果你的laravel版本是5.5那么安装下面的2.1.0版本的包还可以用,
步骤1、composer 运行下面命令安装
composer require "maatwebsite/excel:~2.1.0"
如果本地安装提示:
报上面错的话 执行:
COMPOSER_MEMORY_LIMIT=-1 composer require "maatwebsite/excel:~2.1.0"
二、下面步骤2和3不管什么版本,闭着眼都要添加
步骤2、打开laravel项目中的config/app.php文件,添加以下两处
//providers元素添加
Maatwebsite\Excel\ExcelServiceProvider::class,
//aliases元素添加
'Excel' => Maatwebsite\Excel\Facades\Excel::class,
步骤3、发送配置文件(执行后会自动生成一个配置文件config/excel.php)
php artisan vendor:publish --provider="Maatwebsite\Excel\ExcelServiceProvider"
三、maatwebsite/excel:~3.1.0的包导出代码
php artisan make:export UsersExport --model=User
控制器中导出,这样默认导出模型对应的表的数据
use App\Exports\UsersExport;
use Maatwebsite\Excel\Facades\Excel;
use App\Http\Controllers\Controller;
class UsersController extends Controller
public function export()
return Excel::download(new UsersExport, 'users.xlsx');
但是一般我们要导出的可能不止单表的数据,那么通常我们会先查询组合好数据格式(二维数组) ,然后导出。
生成导出文件app/Exports/TestExport
php artisan make:export TestExport
复制下面代码,编辑TestExport.php文件
namespace App\Exports;
use Maatwebsite\Excel\Concerns\FromCollection;
class TestExport implements FromCollection
// 要导出的数据
public $data;
public function __construct(array $data)
$this->data = $data;
* @return \Illuminate\Support\Collection
public function collection()
return collect($this->data);
控制器中代码如下:
public function export(Request $request)
$cellData[] = ['学号','姓名','成绩'];
$list = [
['10001','AAAAA','99'],
['10002','BBBBB','92'],
['10003','CCCCC','95'],
['10004','DDDDD','89'],
['10005','EEEEE','96'],
if ($list) {
$cellData = array_merge($cellData, $list);
//此时打印出结果如下
// $data = [
// ['学号','姓名','成绩'],
// ['10001','AAAAA','99'],
// ['10002','BBBBB','92'],
// ['10003','CCCCC','95'],
// ['10004','DDDDD','89'],
// ['10005','EEEEE','96'],
// ];
// $data = [
// // ...
// ];
// download 方法直接下载,store 方法可以保存。具体的导出类型等看官方的文档吧
$obj = new TestExport($cellData);
return Excel::download($obj, 'test文件名称.xls');//***文件名
访问路由, 成功下载excel文件!完成。
三、maatwebsite/excel:~2.1.0的包导出代码
4、开始测试导出
* 后端直接导出excel
public function export(Request $request)
$cellData[] = ['学号','姓名','成绩'];
$list = [
['10001','AAAAA','99'],
['10002','BBBBB','92'],
['10003','CCCCC','95'],
['10004','DDDDD','89'],
['10005','EEEEE','96'],
if ($list) {
$cellData = array_merge($cellData, $list);
//此时打印出 $cellData 结果如下
// $data = [
// ['学号','姓名','成绩'],
// ['10001','AAAAA','99'],
// ['10002','BBBBB','92'],
// ['10003','CCCCC','95'],
// ['10004','DDDDD','89'],
// ['10005','EEEEE','96'],
// ];
Excel::create( 'Excel表名字',function ($excel) use ($cellData){
$excel->sheet('score', function ($sheet) use ($cellData){
$sheet->rows($cellData);
})->export('xlsx');
# 如果导出中午乱码用下面的
// Excel::create(iconv('UTF-8', 'GBK', 'Excel表名字'),function ($excel) use ($cellData){
// $excel->sheet('score', function ($sheet) use ($cellData){
// $sheet->rows($cellData);
// });
// })->export('xlsx');
导出前后端实现不同方式
后端实现的导出:
Java Excel是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容、创建新的Excel文件、更新已经存在的Excel文件。jxl 由于其小巧 易用的特点, 逐渐已经取代了 POI-excel的地位, 成为了越来越多的java开发人员生成excel文件的首选。
Jakarta POI HSSF API组件
HSSF(用于操作Excel的组件)提供给用户使用的对象在rg.apache.poi.hssf.usermodel包中,主要部分包括Excel
一般来讲导出都是后端完成逻辑,给接口给到前端,前端调用接口简单处理导出就可以了,但是上次我们公司做内部使用的后台,认为数据量小,前端导出实时更快,于是也有了前端导出的方式,做个总结。
先过一下后端导出的做法以及需要注意的一些点:
//我是事先封装了一个请求的方法,然后是正常的请求,只是需要注意的是要加一个responseType: 'blob',因为后端返回的就是一个blob类型
export function getDetailExcel (params) {
return request({
一、通过后端处理导出1.) 后端响应头设置前端若想下载一个根据查询参数生成的excel报表文件,需要后端设置请求内容的类型,具体设置如下:2.) 前端相应的代码正常情况下...
在开发中我们会遇到导出Excel表格的需求,但是导出分为前端生成和后端生成。
前端生成的方式CSDN其他小伙伴已经做出了很多教程,是依赖xlsx插件。
但是,今天我讲的是,调用后端接口的方式生成Excel表格。
在后台管理系统中按搜索条件框中输入的要求导出对应的数据,生成Excel表格。3.封装的导出生成Excel表格方法。1.从前端获取输入的条件,传到后端。2.后端接收数据,执行导出操作。
<el-form-item>
<el-button @click="downloadExcel()" type="primary">导出</el-button>
</el-form-item>
2.调用接口
// 导出
downloadExcel() {
this.exportBalanceOrder()
async exportBalanceOrde
Excel::create('Laravel Excel', function($excel) {
$excel->sheet('Excel sheet', function($...
前段组内要做一个关于excel的任务,其中一个小业务:一个文件夹下有多个excel,要求导出的一个文件夹代表一个excel,一个excel代表一个sheet,最终导出的是一个excel中包含多个sheet。也就是要合并一个文件夹中的多个excel。......
直接上代码:
\Excel::create('excel文件名', function ( $excel ) use ( $data, $headName) {
$excel->sheet('设置sheet名称', function ( $sheet ) use ( $data, $headName ) {
//设置头部 合并单元格
$sheet->cell("A1", '设置表头');