添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

如果你的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
* 后端直接导出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", '设置表头');