EasyExcel分片导出

1.ExcelExportUtil

//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//

package com.etl.commons.utils;

import com.etl.commons.excel.ExcelExport;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.OutputStream;
import java.util.List;
import org.springframework.stereotype.Component;

@Component
public class ExcelExportUtil {
    public ExcelExportUtil() {
    }

    public ExcelExport createExcelExport(File file, Class<?> dataClass) {
        try {
            return ExcelExport.builder().file(file).writeClass(dataClass).build();
        } catch (Exception var4) {
            return null;
        }
    }

    public void excelExportWrite(ExcelExport excelExport, List<?> data, String sheetName) {
        excelExport.write(data, sheetName);
    }

    public void excelExportWriterFinish(ExcelExport excelExport) {
        excelExport.writerFinish();
    }

    public ExcelExport createExcelExport(OutputStream outputStream, Class<?> dataClass) throws Exception {
        return ExcelExport.builder().outStream(new BufferedOutputStream(outputStream)).writeClass(dataClass).buildNoFile();
    }
}

2.分片逻辑

   @Override
    public void exportAppealPmSalesList(HttpServletResponse response, List<String> dmPositionCode) throws Exception {
        String userName = headerHandler.getUserName();
        ExcelExport excelExport;
        String tableName = "SalesList_"+userName+"_"+DateUtil.getDays()+".xlsx";
        long indexStart = 0;
        long indexSize = 50000;
        try {
            //OutputStream outputStream = new FileOutputStream("C://Workspace//" + tableName);
            OutputStream outputStream = response.getOutputStream();
            response.setContentType("APPLICATION/OCTET-STREAM");
            response.setHeader("Content-Disposition", "attachment;filename=" + UriUtils.encode(tableName, "utf-8"));
            excelExport = excelExportUtil.createExcelExport(outputStream, AppealPmSalesList.class);
            Integer totalCount = appealPmSalesListRepository.countPmSalesList(dmPositionCode);
            //计算总分页页数,写的次数
            long pageCount = totalCount % indexSize == 0 ? totalCount / indexSize : totalCount / indexSize + 1;
            //分页查询
            for (int i = 0; i < pageCount; i++) {
                //清除data数据集合 用于释放内存
                List<AppealPmSalesList> rowList =appealPmSalesListMapper.selectPmSalesList(indexStart, indexSize,dmPositionCode);
                excelExportUtil.excelExportWrite(excelExport, rowList, "sheet");
                indexStart = indexStart + indexSize;
                rowList.clear();
            }
            excelExportUtil.excelExportWriterFinish(excelExport);
        } catch (Exception e) {
            e.printStackTrace();
            throw new BusinessException(tableName + "生成计算报告文件异常");
        }
    }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值