EasyExcel的简单导出

Controller层代码
@GetMapping("/download")
public void download(String name, HttpServletResponse response) {fileManager.download(name, response);
}
Service处理代码
public void download(String name, HttpServletResponse response) {try {String template_path = "E://template//模板文件.xlsx";if (!new File(template_path).exists()) {String message = "模板文件不存在,路径:" + template_path;log.error(message);throw new XException(message);}String strFileName = String.format("%s_导出文件.xlsx", name);//获取数据字段数据【这个根据自己需要获取到对应的数据,自己实现此方法】List<SysColDto> sysColDtos = getData();//构建填充excel单元格数据【需要将获取到的转换成SysColExcelDto(代码见后面),这个实体类见后面】List<SysColExcelDto> list = new ArrayList<>();for (SysColDto sysColDto : sysColDtos) {SysColExcelDto sysColExcelDto = new SysColExcelDto();sysColExcelDto.setModname(sysColDto.getModname());sysColExcelDto.setLname(sysColDto.getLname());sysColExcelDto.setCname(sysColDto.getCname());list.add(sysColExcelDto);}//自定义行风格handler【笔者这边用了一个自定义行风格handler(代码见后面),是为了实现框线,看每个人的需求决定使不使用】CustomRowStyleHandler customRowStyleHandler = new CustomRowStyleHandler(1, 9);response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");// 这里URLEncoder.encode可以防止中文乱码response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");response.setHeader("Content-Disposition", String.format("attachment; filename=\"%s\"", new String(strFileName.getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1)));//填充excel【easyExcel提供了多种生成excel的方式,这边使用的是根据模板来填充模板中的数据doFill,模板中数据填充位置需要参考:https://easyexcel.opensource.alibaba.com/docs/current/quickstart/fill】EasyExcel.write(response.getOutputStream()).registerWriteHandler(customRowStyleHandler).withTemplate(template_path).sheet().doFill(list);} catch (IOException ex) {throw new XException(ex.getMessage());}}
SysColExcelDto.java类
  • 这是使用easyExcel提供的注解来标记字段填充行数,这种情况适用于自动生成,如果是填充excel(doFill方式)可以不用ExcelProperty注解标识,但是需要在模板中标记数据填充位置
  • 模板标记数据填充位置标记如下,name和number对应的excel对象的字段名,自行修改即可
/*** 书签导入excel对象*/
@Data
public class SysColExcelDto {@ExcelProperty("对应信息采集组")private String modname;@ExcelProperty("对应采集栏目名称")private String lname;@ExcelProperty("对应系统中文字段")private String cname;
}
CustomRowStyleHandler.java
  • 这是自定义行风格处理器,是因为某些情况下需要加格式,看需求
  • 除了RowWriteHandler 可以实现,还有CellWriteHandler可以实现,顾名思义是处理单元格
/*** excel自定义行风格处理器*/
public class CustomRowStyleHandler implements RowWriteHandler {//单元格起始下标private Integer cellIndexStart;//单元格结束下标private Integer cellIndexEnd;public CustomRowStyleHandler(Integer cellIndexStart, Integer cellIndexEnd) {this.cellIndexStart = cellIndexStart;this.cellIndexEnd = cellIndexEnd;}public CustomRowStyleHandler() {}@Overridepublic void afterRowDispose(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Row row, Integer relativeRowIndex, Boolean isHead) {Sheet sheet = writeSheetHolder.getSheet();Workbook workbook = sheet.getWorkbook();CellStyle cellStyle = workbook.createCellStyle();//设置边框样式cellStyle.setBorderLeft(BorderStyle.THIN);//细实线cellStyle.setBorderTop(BorderStyle.THIN);cellStyle.setBorderRight(BorderStyle.THIN);cellStyle.setBorderBottom(BorderStyle.THIN);for (Integer i = cellIndexStart; i <= cellIndexEnd; i++) {Cell cell = row.getCell(i);cell.setCellStyle(cellStyle);}}
}

EasyExcel的简单导出相关推荐

  1. EasyExcel的简单导出,多sheet导出,读Excel

    首先为文件创建相对路径 ​// 文件名String fileName = "测试表格_".concat(DateUtil.nowDateTime(Constants.DATE_TI ...

  2. easyexcel php,使用easyexcel进行简单的表格导入导出功能

    easyexcel只提供一个简单的导出和导入功能,并没有太多的方法进行调用,如果您对PHPExcel非常了解,您也可以引入成功之后直接使用PHPExcel中的方法自己书写规则 easyexcel下载地 ...

  3. 【java学习】EasyExcel的简单使用

    EasyExcel的简单使用 前言 Excel读 1.实体类 2.读监听器与测试类 3.输出结果 Excel写 1.实体类 2.写入Excel的测试类 3.输出结果 填充Excel 1.Excel模板 ...

  4. java使用EasyExcel实现导入导出几种方式(导入、模板导出、和不需要模板的导出)

    java通过EasyExcel实现导入导出(导入.模板导出.和不需要模板的导出) 此文章只是涉及到简单的导入导出 通过实体模板导入数据 无实体模板导入数据 导出数据 通过模板导出数据 使用到的mave ...

  5. EasyExcel的简单使用(easyExcel和poi)

    EasyExcel的简单使用 前言 Excel读 1.实体类 2.读监听器与测试类 3.输出结果 Excel写 1.实体类 2.写入Excel的测试类 3.输出结果 填充Excel 1.Excel模板 ...

  6. easyexcel复杂模板导出(合并行列,列统计汇总)

    easyexcel复杂模板导出(合并行列,统计汇总) 为什么使用easyexcel 1. easyexcel可以通过模板导出(符合项目使用习惯) 2. easyexcel支持大数据量导出,性能较好(满 ...

  7. EasyExcel的简单读取操作

    EasyExcel的简单读取操作 Java领域解析.生成Excel比较有名的框架有Apache poi. jxl等.但他们都存在一个严重的问题就是 非常的耗内存.如果你的系统并发量不大的话可能还行,但 ...

  8. easyexcel结合zip 导出压缩文件(包含多个excel)

    easyexcel结合zip 导出压缩文件(包含多个excel) 直接上代码- 分批次查询处理示例代码 int limit = 1;int pageNum = 500;ByteArrayOutputS ...

  9. easyexcel使用教程-导出篇

    easyExcel使用教程–导出篇 开始准备工作 1.导入Maven依赖 <dependency><groupId>com.alibaba</groupId>< ...

最新文章

  1. 关于GridView手动绑定的一段代码,一切尽在不言中
  2. ASP.NET2.0图片格式转换【月儿原创】
  3. 51系列中data,idata,xdata,pdata的区别[笔记]
  4. 基于ASP.NET 3.5 Web Service 的JSON扩展应用
  5. [Hnoi2013]消毒
  6. c#向MFC窗体发送消息
  7. java day12【Object类、常用API】
  8. JAVA贪吃蛇小游戏源代码系列
  9. JXNU Linux 学习通单元测试题 和 答案
  10. CDA Day1-3 Excel公式常用函数跟课学习
  11. 如何解锁PDF的打印限制
  12. 苹果CMSV10黑色自适应简约炫酷影视网站模板
  13. 在线词云工具Tagxedo的使用
  14. 关于使用response.addCookie 添加失败
  15. 外卖行业现状分析_2019年我国餐饮外卖行业发展现状及前景分析
  16. ShowWindow 显示窗口
  17. 软件版本GA、RC、beta等含义
  18. oracle双活数据中心建设_两地三中心数据中心和同城双活数据中心的区别?
  19. mysql 模糊查找表名
  20. 形状因子对禁带的调控

热门文章

  1. windows 内核对象
  2. Fresco的使用和缓存清理
  3. JBoss启动WebService时报错,需要对JBoss配置文件进行操作
  4. java生成冗余校验码_对循环冗余校验码CRC的理解
  5. 多项式、正交多项式最小二乘拟合
  6. 基于SVM.NET的验证码识别算法实现
  7. 逗号表达式 java_逗号表达式的用法
  8. 我觉得对于我这样一个大学2年半换了4个手机的人,是最有资格来进行评价下了。
  9. 惠普客服提供安装win10系统方法
  10. 几种常用的PID控制方式(入门推荐)