easyexcel导出文件(多个sheet导出)

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

单个sheet

@RequestMapping("/excelTest")
    public void excelTest(HttpServletResponse response) throws Exception{
        // 这里 需要指定写用哪个class去写,然后写到第一个sheet,名字为模板 然后文件流会自动关闭
        responseHeader(response,"模板");
        EasyExcel.write(response.getOutputStream(), ExcelEntity.class).sheet("事件").doWrite(data());
    }
private static List<ExcelEntity> data() {
        List<ExcelEntity> list = new ArrayList<ExcelEntity>();
        for (int i = 0; i < 10; i++) {
            ExcelEntity data = new ExcelEntity();
            data.setId(i);
            data.setAmount(new BigDecimal(i));
            data.setAmountRate(new BigDecimal(i));
            list.add(data);
        }
        return list;
    }
    //封装响应流
    public static void responseHeader(HttpServletResponse response, String name) throws UnsupportedEncodingException {
        String fileName = name;
        String encodeName = java.net.URLEncoder.encode(fileName, "UTF-8");
        response.setContentType("application/vnd.ms-excel");
        response.setHeader("Content-Disposition", "attachment; filename=" + encodeName + ".xlsx");
        response.setHeader("Access-control-Expose-Headers", "attachment");
    }

实体类

public class ExcelEntity implements Serializable {

    @ExcelProperty(value = "主键id")
    private Integer id;
    @ExcelProperty(value = "金额")
    @NumberFormat("###.##")
    private BigDecimal amount;
    @ExcelProperty(value = "百分比")
    @NumberFormat("###.##%")
    private BigDecimal amountRate;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public BigDecimal getAmount() {
        return amount;
    }

    public void setAmount(BigDecimal amount) {
        this.amount = amount;
    }

    public BigDecimal getAmountRate() {
        return amountRate;
    }

    public void setAmountRate(BigDecimal amountRate) {
        this.amountRate = amountRate;
    }
}

多个sheet

@RequestMapping("/excelTest")
    public void excelTest(HttpServletResponse response) throws Exception{
        // 这里 需要指定写用哪个class去写,然后写到第一个sheet,名字为模板 然后文件流会自动关闭
        responseHeader(response,"模板");
        WriteTable writeTable = EasyExcel.writerTable(1).needHead(Boolean.TRUE).head(ExcelEntity.class).build();
        ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).build();
        WriteSheet writeSheet = new WriteSheet();
        writeSheet.setSheetNo(1);
        writeSheet.setSheetName("aa");
        excelWriter.write(data(),writeSheet,writeTable);
        writeSheet = new WriteSheet();
        writeSheet.setSheetNo(2);
        writeSheet.setSheetName("bb");
        excelWriter.write(data(),writeSheet,writeTable);
        excelWriter.finish();
    }

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
EasyExcel是一款基于Java的开源Excel操作工具,它提供了简单易用的API,可以方便地进行Excel文件的读写操作。要导出多个sheet,可以按照以下步骤进行操作: 1. 创建一个ExcelWriter对象:使用`EasyExcel.write()`方法创建一个ExcelWriter对象,指定要导出文件路径和文件名。 2. 定义数据源:准备好要导出的数据源,可以是一个List集合或者一个数据库查询结果集。 3. 创建Sheet对象:使用`ExcelWriter.write()`方法创建一个Sheet对象,并指定sheet名称和对应的实体类。 4. 写入数据:使用`Sheet.write()`方法将数据写入到Sheet中,可以一次性写入整个数据源,也可以分批次写入。 5. 创建下一个Sheet:如果还有其他需要导出sheet,重复步骤3和步骤4。 6. 完成导出:使用`ExcelWriter.finish()`方法完成导出操作,将数据写入到Excel文件中,并关闭ExcelWriter对象。 下面是一个示例代码,演示了如何使用EasyExcel导出多个sheet: ```java // 创建ExcelWriter对象 String fileName = "path/to/output.xlsx"; ExcelWriter excelWriter = EasyExcel.write(fileName).build(); // 定义数据源 List<User> userList = getUserList(); List<Order> orderList = getOrderList(); // 创建第一个Sheet并写入数据 Sheet sheet1 = new Sheet(1, 0, User.class, "用户信息"); excelWriter.write(userList, sheet1); // 创建第二个Sheet并写入数据 Sheet sheet2 = new Sheet(2, 0, Order.class, "订单信息"); excelWriter.write(orderList, sheet2); // 完成导出 excelWriter.finish(); ``` 这样就可以将`userList`导出到第一个sheet,将`orderList`导出到第二个sheet。你可以根据实际需求,创建更多的Sheet对象并写入数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值