EasyExcel导出,EasyExcel大数据导出

1.引入包
<!-- 阿里开源 easyExcel -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>easyexcel</artifactId>
    <version>3.3.2</version>
</dependency>
2.实体

@ColumnWidth(15)//宽度
@ExcelProperty(value = "姓名")//标题
private String name;

@ExcelIgnore//忽略
private Short sex;

3.简单导出
try {
    String fileName = URLEncoder.encode("特种信息", "UTF-8");
    response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");
    EasyExcel.write(response.getOutputStream(), SpecialCertDTO.class).sheet(fileName).doWrite(page.getRecords());
} catch (Exception e) {
    log.error(Exceptions.getStackTraceAsString(e));
}

4.大数据导出

IPage<ProjectDTO> page = statisticsService.projectList(requestDTO);
// 每次写入数量
long size = page.getSize();
// 总数据数量
long totalCount = page.getTotal();
OutputStream outputStream = null;
try {
    //文件名
    String fileName = URLEncoder.encode("工程信息", "UTF-8");
    //计算需要写入的数量
    Long sheetNum = totalCount / size + 1;
    outputStream = response.getOutputStream();
    //必须放到循环外,否则会刷新流
    ExcelWriter excelWriter = EasyExcel.write(outputStream).build();
    //创建Sheet
    WriteSheet sheet = new WriteSheet();
    sheet.setSheetName("Sheet1");
    sheet.setSheetNo(1);
    WriteSheet writeSheet = EasyExcel.writerSheet(1, "Sheet" + (1)).head(ProjectDTO.class)
            .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).build();
    excelWriter.write(page.getRecords(), writeSheet);
    //循环写入次数: j的自增条件是当不是最后一个Sheet的时候写入次数为正常的每个Sheet写入的次数,如果是最后一个就需要使用计算的次数lastSheetWriteCount
    for (int j = 1; j < sheetNum; j++) {
        requestDTO.setPage(j + 1);
        page = statisticsService.projectList(requestDTO);
        //写入到excel:
        WriteSheet writeSheet1 = EasyExcel.writerSheet(1, "Sheet1").head(ProjectDTO.class)
                .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).build();
        excelWriter.write(page.getRecords(), writeSheet1);
    }
    // 下载EXCEL,返回给前段stream流
    response.setContentType("application/octet-stream");
    response.setCharacterEncoding("utf-8");
    response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");
    excelWriter.finish();
    outputStream.flush();
    outputStream.close();
} catch (Exception e) {
    e.printStackTrace();
} finally {
    if (outputStream != null) {
        outputStream.close();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值