简单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. JAVA --BYTECODE
  2. 前端信息查询与显示_中国商标网查询显示的信息都是正确的吗
  3. android wear评测,android wear5.1怎么样 android wear5.1更新评测
  4. 中国唯一一位女性 Apache Member 潘娟:我们还是要走出自己与众不同的 My Way
  5. 2017年终奖发放,程序员人均11776元排名第一!
  6. 摄影测量学——航摄像片的内、外方位元素和像点空间直角坐标变换与中心投影构像方程
  7. 【机器学习系列】EM算法第一讲:EM算法相关概述及收敛性证明
  8. mysql可视化界面数据导出_MySQL 使用可视化工具导出与导入数据
  9. 如何设置CentOS7的时间与网络同步
  10. 一种电力线宽带载波系统采样频偏的估计方法
  11. oracle经纬度换算成xy坐标,xy坐标转换经纬度【处置步骤】
  12. 阿里云认证有什么用?考哪个比较好?
  13. SpringBoot上传xlsx并批量导入
  14. 阿里云安装Jdk1.8,So easy!
  15. 解析MNIST数据集
  16. android将图片做成视频播放,如何把图片做成视频【图文教程】
  17. Android自定义的下拉列表框控件
  18. spring 注解练习
  19. Python 获取当前系统时间
  20. byte转16进制字符串<——>16进制转byte

热门文章

  1. 【VR】虚拟现实软件开发工具与技术
  2. 推荐几款好用的文本编辑器
  3. 博客园博客下载工具,可以主动搜索某人的blog,并以MHTML格式保存到本地文件夹脱机浏览。...
  4. PHP发卡自动源码,PHP自动化售货发卡网源码
  5. Visual Studio助手VAssistx各版本破解教程
  6. FBWF和EWF的对比
  7. 根据银行卡账号获取所属银行php
  8. java函数的定义方法_java函数的定义以及使用方法介绍
  9. CC2540和CC2541蓝牙芯片将升级为蓝牙5.0
  10. Autodesk AutoCAD 2023 Mac中文版安装方法