简单excel导出
第一步:导入依赖

  <dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-spring-boot-starter</artifactId><version>4.2.0</version></dependency>

第二部:构建导出excel实体类

@Data
@ExcelTarget("alarmTrendExcel")
public class AlarmStatisticsDto {/*** 时间*/@Excel(name = "时间",width = 30,needMerge = true)private String warningTime;/*** 报警数量*/@Excel(name = "报警量",width = 30,needMerge = true)private int warningCount;
}
@Data
@NoArgsConstructor
@AllArgsConstructor
@ExcelTarget("alarmPositionExcel")
public class AlarmPositionDto {/*** 所属地区编码*/private String deviceAreaCode;/*** 所属地区名*/@Excel(name = "所属区域",width = 30,needMerge = true)private String deviceArea;/*** 报警数量*/@Excel(name = "报警量",width = 30,needMerge = true)private int warningCount;/*** 开始时间*/@Excel(name = "开始时间",width = 30,needMerge = true)private String startTime;/*** 结束时间*/@Excel(name = "结束时间",width = 30,needMerge = true)private String endTime;
}
@Data
@NoArgsConstructor
@AllArgsConstructor
@ExcelTarget("bizProportionDto")
public class BizProportionDto {/*** 业务名对应code值*/private String pcode;/*** 业务名*/@Excel(name = "业务名称",width = 30,needMerge = true)private String name;/*** 数量*/@Excel(name = "报警次数",width = 30,needMerge = true)private int warningCount;/*** 占比*/@Excel(name = "占比",width = 30,needMerge = true)private String proportion;/*** 开始时间*/@Excel(name = "开始时间",width = 30,needMerge = true)private String startTime;/*** 结束时间*/@Excel(name = "结束时间",width = 30,needMerge = true)private String endTime;
}
@Data
@NoArgsConstructor
@AllArgsConstructor
@ExcelTarget("deviceProportionDto")
public class DeviceProportionDto {/*** 设备名code*/private String pcode;/*** 设备名*/@Excel(name = "设备名称",width = 30,needMerge = true)private String name;/*** 数量*/@Excel(name = "报警次数",width = 30,needMerge = true)private int warningCount;/*** 占比*/@Excel(name = "占比",width = 30,needMerge = true)private String proportion;/*** 开始时间*/@Excel(name = "开始时间",width = 30,needMerge = true)private String startTime;/*** 结束时间*/@Excel(name = "结束时间",width = 30,needMerge = true)private String endTime;
}

第三步:导出

 public ApiResponse export(AlarmStatisticsVo alarmStatisticsVo, HttpServletResponse response) throws ClassNotFoundException {Workbook workBook = null;// 将sheet1、sheet2、sheet3使用得map进行包装List<Map<String, Object>> sheetsList = new ArrayList<>();//sheet1List<AlarmStatisticsDto> alarmTrendData = alarmStatisticsService.getAlarmTrendExcelData(alarmStatisticsVo);Map<String, Object> trendSheet = EasyPoiSheetCreaterUtil.getSheet(AlarmStatisticsDto.class,alarmTrendData, "sheet1");sheetsList.add(trendSheet);//sheet2List<AlarmPositionDto> alarmPositionDtos = alarmStatisticsService.getAlarmExcelPositions(alarmStatisticsVo);Map<String, Object> positionSheet = EasyPoiSheetCreaterUtil.getSheet(AlarmPositionDto.class,alarmPositionDtos, "sheet2");sheetsList.add(positionSheet);//sheet3List<DeviceProportionDto> deviceProportionDtos = alarmStatisticsService.getAlarmDeviceExcelData(alarmStatisticsVo);Map<String, Object> deviceSheet = EasyPoiSheetCreaterUtil.getSheet(DeviceProportionDto.class,deviceProportionDtos, "sheet3");sheetsList.add(deviceSheet);//sheet4List<BizProportionDto> bizProportionDtos = alarmStatisticsService.getAlarmBizExcelData(alarmStatisticsVo);Map<String, Object> bizSheet = EasyPoiSheetCreaterUtil.getSheet(BizProportionDto.class,bizProportionDtos, "sheet4");sheetsList.add(bizSheet);workBook = ExcelExportUtil.exportExcel(sheetsList, ExcelType.HSSF);// 设置excel的文件名称String excelName;// 当前日期,用于导出文件名称SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");Integer linkId = alarmStatisticsVo.getLinkId();if (ObjectUtils.isEmpty(linkId)){excelName = "文件名" + "-" + sdf.format(new Date());}else {Link linkDetailsById = linkService.getLinkDetailsById(linkId);excelName= linkDetailsById.getLinkName() + "-" + sdf.format(new Date());}// 重置响应对象response.reset();// 指定下载的文件名--设置响应头response.setHeader("Content-Disposition", "attachment;filename=" + new String((excelName + ".xls").getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1));response.setContentType("application/vnd.ms-excel;charset=UTF-8");response.setHeader("Pragma", "no-cache");response.setHeader("Cache-Control", "no-cache");response.setDateHeader("Expires", 0);// 写出数据输出流到页面try {OutputStream output = response.getOutputStream();BufferedOutputStream bufferedOutPut = new BufferedOutputStream(output);workBook.write(bufferedOutPut);bufferedOutPut.flush();bufferedOutPut.close();output.close();} catch (IOException e) {e.printStackTrace();}return “success”;}

构建sheet 工具抽取

public class EasyPoiSheetCreaterUtil {/*** easypoi导出excel构建sheet** @param object  导出实体的类* @param recordList  导出数据list* @param sheetName sheet名称* @return* @throws ClassNotFoundException*/public static Map<String, Object> getSheet(Object object, List<? extends Object> recordList, String sheetName) throws ClassNotFoundException {// 创建sheet1使用得mapMap<String, Object> exportMap = new HashMap<>();// 创建参数对象(用来设定excel得sheet得内容等信息)ExportParams exportParams = new ExportParams();// 设置sheet得名称exportParams.setSheetName(sheetName);// title的参数为ExportParams类型,目前仅仅在ExportParams中设置了sheetNameexportMap.put("title", exportParams);// 模版导出对应得实体类型exportMap.put("entity", Class.forName(((Class) object).getCanonicalName()));// sheet中要填充得数据exportMap.put("data", recordList);// 执行方法return exportMap;}
}

复杂一点的导出:没做,看了一下这篇,挺不错的https://blog.csdn.net/weixin_36380516/article/details/108426874

Easypoi导出excel相关推荐

  1. 编码技巧——使用Easypoi导出Excel、多sheet

    本文主要介绍easypoi导出Excel的代码示例:自己之前手动实现过导出工具类<编码技巧--导出工具类>,基于实体和注解,通过反射来映射实体字段和exce列的关系:在部分工程里面看到了e ...

  2. 使用EasyPOI导出Excel模板数据(含图片)

    使用EasyPOI导出Excel模板数据(含图片) EasyPOI功能如同名字Easy,主打的功能就是容易,让一个没接触过POI的人员可以方便的写出Excel导出,Excel模板导出,Excel导入, ...

  3. EasyPoi导出Excel实现标记颜色

    EasyPoi导出Excel实现标记颜色 PS:不知道EasyPoi 的可以看快速上手文档 <dependency><groupId>cn.afterturn</grou ...

  4. easypoi导出excel不设置样式_EasyPOI 导出excel设置边框,背景颜色,字体样式

    EasyPOI 导出excel设置边框,背景颜色,字体样式 EasyPOI 导出代码示例ExportParams exportParams = new ExportParams(); exportPa ...

  5. 使用easypoi导出excel实现动态列

    使用easypoi导出excel实现动态列 说明 使用的是easypoi进行导出 行头是动态生成 依据key进行列匹配,进行数据填充 第一列进行纵向动态合并 自己的一个使用,记录一下 工具依赖 < ...

  6. 用easyPoi导出excel,带多sheet,合并单元格,合计,单元格金额类型

    用easyPoi导出excel,带多sheet,合并单元格,合计,单元格金额类型 文档连接:http://easypoi.mydoc.io/ 1.引入依赖 <!-- 导出文件工具 EasyPoi ...

  7. EasyPoi导出Excel,完整代码+案例(100%能导出——导不出来砍我)

    java解决,EasyPoi导出Excel,废话不多说,直接上代码 第一步:导入依赖 <!--EasyPoi导入导出 --><dependency><groupId> ...

  8. EasyPoi导出excel文件总是1kb,且打不开

    EasyPoi导出excel文件总是1kb,且打不开 excel文件下载成功后打开文件遇到错误 之前的下载代码 private static void downLoadExcel(String fil ...

  9. Easypoi 导出excel 使用注解实现一二级标题行的单元格合并

    Easypoi 导出excel 使用注解实现一二级标题行的单元格合并 先看一下最终效果图 上代码 Excel 模板实体类 @Data public class HxAdvisoryZJEndExcel ...

  10. 用EasyPoi导出Excel中单元格图片(线上阿里云)

    用EasyPoi导出Excel中单元格图片(线上阿里云): 导出数据需要包含图片 问题描述 提示:这里描述项目中遇到的问题: 数据库中存储图片格式是阿里云(oss)的图片url,导出excel显示图片 ...

最新文章

  1. 自然语言处理(NLP)之英文单词词性还原
  2. 计算开始到结束的时间_阿里钉钉首次战胜微信,云计算的涨停潮只是开始,远未结束...
  3. C语言 数据结构 链表的增删查改
  4. window点location(仅介绍window点location对象,不介绍属性,因标题不能含有非法字符,.用点来代替)
  5. 有效的数独Python解法
  6. 安卓APP_ 控件(8)—— AlertDialog
  7. C++中栈内存和堆内存
  8. php路径详解,详解与PHP路径相关的dirname,realpath,__FILE__函数
  9. 【渝粤教育】国家开放大学2019年春季 2106宪法学 参考试题
  10. 自定义View调用onDraw方法
  11. php多级审核,BOS单据多级审核需在单据头上列示多个审核人员的处理方法
  12. eclipse alt+/ 无效时,如何设置 《转》
  13. java数组排序函数
  14. 软件测试之测试计划案例
  15. 数据分析进阶-Excel绘制分段折线图
  16. 这些年java全栈开发涉及到工具
  17. tomcat 虚拟目录配置appBase和docBase的区别
  18. Tesseract-OCR -01-Tesseract 介绍
  19. linux与window文件通过串口传输方法(zmod传输方法)
  20. HttpWebRequest 介绍

热门文章

  1. Python调整图片透明度
  2. 如何批量将 Excel 文档转为 Txt 文本格式
  3. 最新伯乐PHP个人在线自动发卡网源码V3.1
  4. VC2013同一个工程生成的exe文件显示不同的图标
  5. WIN7 IE10降级为IE9
  6. 机械加工行业QC数据采集与CPK分析案例分享
  7. CLM 陆面过程模式
  8. wsdl2java wsdl文件_使用axis2的wsdl2java把wsdl生成java文件
  9. 非常好的理解遗传算法的例子
  10. sqlserver、mysql删除重复数据