easyExcel 多工作表多列表导出

1、创建maven工程,引用

<!--easyExcel-->
<dependency>
	<groupId>com.alibaba</groupId>
	<artifactId>easyexcel</artifactId>
	<version>3.0.5</version>
</dependency>

2、创建模板

3、代码实现

package com.meng.example.easyexcel;

import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.excel.write.metadata.fill.FillConfig;
import com.alibaba.excel.write.metadata.fill.FillWrapper;
import lombok.Data;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class ExportTest {

    public static void main(String[] args) {
        String outPath = "C:\\Users\\Administrator\\Desktop\\export.xlsx";
        String path = System.getProperty("user.dir");
        String templatePath = path + "/src/main/resources/templates/template.xlsx";
        //构建测试数据
        List<FillData> fillIntDataList = buildListFillData(5);
        List<FillData> fillOutDataList = buildListFillData(10);
        Map<String,Object> map = null;
        //工作簿对象
        ExcelWriter excelWriter = EasyExcel.write(outPath).withTemplate(templatePath).build();
        FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.TRUE).build();
        //工作区对象
        WriteSheet writeSheet = EasyExcel.writerSheet(0,"测试0").build();
        map = new HashMap<>();
        map.put("name","add");
        map.put("description","新增方法");
        excelWriter.fill(map,writeSheet);
        excelWriter.fill(new FillWrapper("data1",fillIntDataList),fillConfig,writeSheet);
        excelWriter.fill(new FillWrapper("data2",fillOutDataList),fillConfig,writeSheet);

//        writeSheet = EasyExcel.writerSheet(1,"测试1").build();
//        map = new HashMap<>();
//        map.put("name","update");
//        map.put("description","修改方法");
//        excelWriter.fill(map,writeSheet);
//        excelWriter.fill(new FillWrapper("data1",fillIntDataList),fillConfig,writeSheet);
//        excelWriter.fill(new FillWrapper("data2",fillOutDataList),fillConfig,writeSheet);
//
//        writeSheet = EasyExcel.writerSheet(2,"测试2").build();
//        map = new HashMap<>();
//        map.put("name","delete");
//        map.put("description","删除方法");
//        excelWriter.fill(map,writeSheet);
//        excelWriter.fill(new FillWrapper("data1",fillIntDataList),fillConfig,writeSheet);
//        excelWriter.fill(new FillWrapper("data2",fillOutDataList),fillConfig,writeSheet);

        excelWriter.finish();
    }

    private static List<FillData> buildListFillData(int num) {
        List<FillData> fillDataList = new ArrayList<>();
        for(int i=0;i<num;i++){
            FillData fillData = new FillData();
            fillData.setFieldName("fn"+i);
            fillData.setComments("说明"+i);
            fillData.setDataType("String");
            fillData.setDataLength(10+i);
            fillData.setRequired(i/2==0);
            fillDataList.add(fillData);
        }
        return fillDataList;
    }

}
@Data
class FillData{
    private String fieldName;
    private String comments;
    private String dataType;
    private int dataLength;
    private boolean isRequired;
}

 4、导出结果

 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用 PHP 的 EasyExcel 库实现多表头导出,可以按照以下步骤进行操作: 1. 安装 PHP 的 EasyExcel 库,可以使用 Composer 进行安装: ``` composer require "phpoffice/phpspreadsheet" ``` 2. 使用 EasyExcel 创建一个新的 Excel 文件,并设置多级表头: ```php use PhpOffice\PhpSpreadsheet\Spreadsheet; use PhpOffice\PhpSpreadsheet\Writer\Xlsx; // 创建一个新的 Spreadsheet 对象 $spreadsheet = new Spreadsheet(); // 获取当前活动的工作表 $worksheet = $spreadsheet->getActiveSheet(); // 设置多级表头 $headers = array( array('text' => '姓名', 'width' => 20, 'colspan' => 1), array('text' => '成绩', 'width' => 0, 'colspan' => 3), array('text' => '语文', 'width' => 15, 'colspan' => 1), array('text' => '数学', 'width' => 15, 'colspan' => 1), array('text' => '英语', 'width' => 15, 'colspan' => 1) ); $worksheet->fromArray($headers, NULL, 'A1'); // 合并多级表头单元格 $worksheet->mergeCells('B1:D1'); ``` 3. 获取数据,将数据逐行添加到工作表中: ```php // 获取数据 $data = array( array('张三', 80, 90, 70), array('李四', 85, 95, 90), array('王五', 70, 75, 80) ); // 将数据逐行添加到工作表中 $row = 2; foreach ($data as $rowdata) { $col = 'A'; foreach ($rowdata as $cell) { $worksheet->setCellValue($col . $row, $cell); $col++; } $row++; } ``` 4. 将工作表保存为 Excel 文件: ```php // 将工作表保存为 Excel 文件 $writer = new Xlsx($spreadsheet); $writer->save('example.xlsx'); ``` 这样,就可以使用 PHP 的 EasyExcel 库实现多表头导出了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值