EasyExcel的简单导出
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的简单导出相关推荐
- EasyExcel的简单导出,多sheet导出,读Excel
首先为文件创建相对路径 // 文件名String fileName = "测试表格_".concat(DateUtil.nowDateTime(Constants.DATE_TI ...
- easyexcel php,使用easyexcel进行简单的表格导入导出功能
easyexcel只提供一个简单的导出和导入功能,并没有太多的方法进行调用,如果您对PHPExcel非常了解,您也可以引入成功之后直接使用PHPExcel中的方法自己书写规则 easyexcel下载地 ...
- 【java学习】EasyExcel的简单使用
EasyExcel的简单使用 前言 Excel读 1.实体类 2.读监听器与测试类 3.输出结果 Excel写 1.实体类 2.写入Excel的测试类 3.输出结果 填充Excel 1.Excel模板 ...
- java使用EasyExcel实现导入导出几种方式(导入、模板导出、和不需要模板的导出)
java通过EasyExcel实现导入导出(导入.模板导出.和不需要模板的导出) 此文章只是涉及到简单的导入导出 通过实体模板导入数据 无实体模板导入数据 导出数据 通过模板导出数据 使用到的mave ...
- EasyExcel的简单使用(easyExcel和poi)
EasyExcel的简单使用 前言 Excel读 1.实体类 2.读监听器与测试类 3.输出结果 Excel写 1.实体类 2.写入Excel的测试类 3.输出结果 填充Excel 1.Excel模板 ...
- easyexcel复杂模板导出(合并行列,列统计汇总)
easyexcel复杂模板导出(合并行列,统计汇总) 为什么使用easyexcel 1. easyexcel可以通过模板导出(符合项目使用习惯) 2. easyexcel支持大数据量导出,性能较好(满 ...
- EasyExcel的简单读取操作
EasyExcel的简单读取操作 Java领域解析.生成Excel比较有名的框架有Apache poi. jxl等.但他们都存在一个严重的问题就是 非常的耗内存.如果你的系统并发量不大的话可能还行,但 ...
- easyexcel结合zip 导出压缩文件(包含多个excel)
easyexcel结合zip 导出压缩文件(包含多个excel) 直接上代码- 分批次查询处理示例代码 int limit = 1;int pageNum = 500;ByteArrayOutputS ...
- easyexcel使用教程-导出篇
easyExcel使用教程–导出篇 开始准备工作 1.导入Maven依赖 <dependency><groupId>com.alibaba</groupId>< ...
最新文章
- 关于GridView手动绑定的一段代码,一切尽在不言中
- ASP.NET2.0图片格式转换【月儿原创】
- 51系列中data,idata,xdata,pdata的区别[笔记]
- 基于ASP.NET 3.5 Web Service 的JSON扩展应用
- [Hnoi2013]消毒
- c#向MFC窗体发送消息
- java day12【Object类、常用API】
- JAVA贪吃蛇小游戏源代码系列
- JXNU Linux 学习通单元测试题 和 答案
- CDA Day1-3 Excel公式常用函数跟课学习
- 如何解锁PDF的打印限制
- 苹果CMSV10黑色自适应简约炫酷影视网站模板
- 在线词云工具Tagxedo的使用
- 关于使用response.addCookie 添加失败
- 外卖行业现状分析_2019年我国餐饮外卖行业发展现状及前景分析
- ShowWindow 显示窗口
- 软件版本GA、RC、beta等含义
- oracle双活数据中心建设_两地三中心数据中心和同城双活数据中心的区别?
- mysql 模糊查找表名
- 形状因子对禁带的调控