当前位置: 首页 > news >正文

easyexcel导出动态写入标题和数据

pom依赖

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

导出数据和核心代码

ElectricDetailTotalDO total = gridElectricDetailTotal(enterpriseId, intervalType, date);List<ElectricDetailTotalDO.Detail> list = Arrays.asList(total.getCity(), total.getGreen(), total.getTotal());List<ElectricDetailTotalExportBO> totalList = BeanUtils.mapList(list, ElectricDetailTotalExportBO.class);totalList.get(0).setEnergyType("市电");totalList.get(1).setEnergyType("绿电");totalList.get(2).setEnergyType("合计用电量");List<GridElectricDetailDayDO> gridElectricDetailDayDOList = gridElectricDetailListDay(enterpriseId, intervalType, date);//构建表头List<List<String>> head = new ArrayList<>();head.add(Arrays.asList("时间", "时间"));head.add(Arrays.asList("时段", "时段"));List<GridElectricDetailDayDO.Grid> gridList = gridElectricDetailDayDOList.get(0).getGridList();for (GridElectricDetailDayDO.Grid grid : gridList) {head.add(Arrays.asList(grid.getGridName(), "市电量(kWh)"));head.add(Arrays.asList(grid.getGridName(), "绿电电量(kWh)"));}//构建数据List<List<String>> dataList = new ArrayList<>();for (GridElectricDetailDayDO gridElectricDetailDayDO : gridElectricDetailDayDOList) {List<String> data = new ArrayList<>();data.add(gridElectricDetailDayDO.getTime());data.add(gridElectricDetailDayDO.getElecTime());for (GridElectricDetailDayDO.Grid grid : gridElectricDetailDayDO.getGridList()) {data.add(DecimalUtils.removeTrailingZero(grid.getCityElectric()));data.add(DecimalUtils.removeTrailingZero(grid.getGreenElectric()));}dataList.add(data);}LoopMergeStrategy loopMergeStrategy = new LoopMergeStrategy(4, 1);//@ColumnWidth(15)SimpleColumnWidthStyleStrategy simpleColumnWidthStyleStrategy = new SimpleColumnWidthStyleStrategy(15);ByteArrayOutputStream bos = new ByteArrayOutputStream();
//        String fileName = "d:\\Desktop\\" + System.currentTimeMillis() + ".xlsx";
//        try (ExcelWriter excelWriter = EasyExcel.write(fileName)try (ExcelWriter excelWriter = EasyExcel.write(bos).registerWriteHandler(getHorizontalCellStyleStrategy()).build()) {// 把sheet设置为不需要头 不然会输出sheet的头 这样看起来第一个table 就有2个头了WriteSheet writeSheet = EasyExcel.writerSheet("数据").needHead(Boolean.FALSE).build();// 这里必须指定需要头,table 会继承sheet的配置,sheet配置了不需要,table 默认也是不需要WriteTable writeTable0 = EasyExcel.writerTable(0).head(ElectricDetailTotalExportBO.class).needHead(Boolean.TRUE).build();WriteTable writeTable1 = EasyExcel.writerTable(1).head(head).registerWriteHandler(loopMergeStrategy).registerWriteHandler(simpleColumnWidthStyleStrategy).needHead(Boolean.TRUE).build();//写入头excelWriter.write(totalList, writeSheet, writeTable0);writeTable1.setRelativeHeadRowIndex(1);//写入列表excelWriter.write(dataList, writeSheet, writeTable1);}DownloadFile downloadFile = new DownloadFile();downloadFile.setFilename("XX.xlsx");downloadFile.setContent(bos.toByteArray());return downloadFile;

相关文章:

  • 【开源解析】基于Python的智能文件备份工具开发实战:从定时备份到托盘监控
  • 为了摸鱼和吃瓜,我开发了一个网站
  • es 里的Filesystem Cache 理解
  • 使用thymeleaf模版导出swagger3的word格式接口文档
  • 视觉图像处理及多模态融合初探
  • SpringBoot 讯飞星火AI WebFlux流式接口返回 异步返回 对接AI大模型 人工智能接口返回
  • leetcode 242. Valid Anagram
  • 【前端基础】9、CSS的动态伪类(hover、visited、hover、active、focus)【注:本文只有几个粗略说明】
  • 四、Hadoop 2.X vs 3.X:特性、架构与性能全解析
  • ubuntu yolov5(c++)算法部署
  • [特殊字符]【实战教程】用大模型LLM查询Neo4j图数据库(附完整代码)
  • 5、开放式PLC梯形图编程组件 - /自动化与控制组件/open-plc-programming
  • 秋招准备——2.跨时钟相关
  • 室内无人机自主巡检解决方案-自主方案
  • STM32-模电
  • Spring Cloud:概述,服务注册和服务发现,多机部署和负载均衡
  • 认识守卫-以及简单的示例和装饰器
  • 如何在macOS上通过SSHFS挂载远程文件系统
  • 驱动开发硬核特训 · Day 30(下篇): 深入解析 lm48100q I2C 音频编解码器驱动模型(基于 i.MX8MP)
  • Redis最新入门教程
  • 重庆大学通报本科生发14篇SCI论文:涉事学生及其父亲被处理
  • 重庆大学通报本科生发14篇SCI论文处理结果
  • 李在明正式登记参选下届韩国总统
  • 体坛联播|郑钦文收获红土赛季首胜,国际乒联公布财报
  • 习近平会见斯洛伐克总理菲佐
  • 习近平会见缅甸领导人敏昂莱