Easypoi导出excel
简单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相关推荐
- 编码技巧——使用Easypoi导出Excel、多sheet
本文主要介绍easypoi导出Excel的代码示例:自己之前手动实现过导出工具类<编码技巧--导出工具类>,基于实体和注解,通过反射来映射实体字段和exce列的关系:在部分工程里面看到了e ...
- 使用EasyPOI导出Excel模板数据(含图片)
使用EasyPOI导出Excel模板数据(含图片) EasyPOI功能如同名字Easy,主打的功能就是容易,让一个没接触过POI的人员可以方便的写出Excel导出,Excel模板导出,Excel导入, ...
- EasyPoi导出Excel实现标记颜色
EasyPoi导出Excel实现标记颜色 PS:不知道EasyPoi 的可以看快速上手文档 <dependency><groupId>cn.afterturn</grou ...
- easypoi导出excel不设置样式_EasyPOI 导出excel设置边框,背景颜色,字体样式
EasyPOI 导出excel设置边框,背景颜色,字体样式 EasyPOI 导出代码示例ExportParams exportParams = new ExportParams(); exportPa ...
- 使用easypoi导出excel实现动态列
使用easypoi导出excel实现动态列 说明 使用的是easypoi进行导出 行头是动态生成 依据key进行列匹配,进行数据填充 第一列进行纵向动态合并 自己的一个使用,记录一下 工具依赖 < ...
- 用easyPoi导出excel,带多sheet,合并单元格,合计,单元格金额类型
用easyPoi导出excel,带多sheet,合并单元格,合计,单元格金额类型 文档连接:http://easypoi.mydoc.io/ 1.引入依赖 <!-- 导出文件工具 EasyPoi ...
- EasyPoi导出Excel,完整代码+案例(100%能导出——导不出来砍我)
java解决,EasyPoi导出Excel,废话不多说,直接上代码 第一步:导入依赖 <!--EasyPoi导入导出 --><dependency><groupId> ...
- EasyPoi导出excel文件总是1kb,且打不开
EasyPoi导出excel文件总是1kb,且打不开 excel文件下载成功后打开文件遇到错误 之前的下载代码 private static void downLoadExcel(String fil ...
- Easypoi 导出excel 使用注解实现一二级标题行的单元格合并
Easypoi 导出excel 使用注解实现一二级标题行的单元格合并 先看一下最终效果图 上代码 Excel 模板实体类 @Data public class HxAdvisoryZJEndExcel ...
- 用EasyPoi导出Excel中单元格图片(线上阿里云)
用EasyPoi导出Excel中单元格图片(线上阿里云): 导出数据需要包含图片 问题描述 提示:这里描述项目中遇到的问题: 数据库中存储图片格式是阿里云(oss)的图片url,导出excel显示图片 ...
最新文章
- 自然语言处理(NLP)之英文单词词性还原
- 计算开始到结束的时间_阿里钉钉首次战胜微信,云计算的涨停潮只是开始,远未结束...
- C语言 数据结构 链表的增删查改
- window点location(仅介绍window点location对象,不介绍属性,因标题不能含有非法字符,.用点来代替)
- 有效的数独Python解法
- 安卓APP_ 控件(8)—— AlertDialog
- C++中栈内存和堆内存
- php路径详解,详解与PHP路径相关的dirname,realpath,__FILE__函数
- 【渝粤教育】国家开放大学2019年春季 2106宪法学 参考试题
- 自定义View调用onDraw方法
- php多级审核,BOS单据多级审核需在单据头上列示多个审核人员的处理方法
- eclipse alt+/ 无效时,如何设置 《转》
- java数组排序函数
- 软件测试之测试计划案例
- 数据分析进阶-Excel绘制分段折线图
- 这些年java全栈开发涉及到工具
- tomcat 虚拟目录配置appBase和docBase的区别
- Tesseract-OCR -01-Tesseract 介绍
- linux与window文件通过串口传输方法(zmod传输方法)
- HttpWebRequest 介绍