赞
踩
使用bootstrap的tableExport仅可导出简单格式的excel文件,导出复杂格式的excel需要使用easyexcel根据模版生成。
需要在pom中导入easyexcel2.1.6和poi3.17依赖。
设置模版:
单行填充使用{name },多行填充使用{.name}
实体类加注解:
- public class Student {
- @ExcelIgnore
- private Integer id;
- @ColumnWidth(20)
- @ExcelProperty("姓名")
- private String name;
- @ColumnWidth(15)
- @ExcelProperty("年龄")
- private String age;
-
- }
@ColumnWidth():设置表头列宽 @ExcelProperty(index,value):index对应表头在第几列,从0开始。value对应表头名称。如果不设置表头默认使用字段名为表头,列顺序按照实体类字段顺序显示。 @ExcelIgnore:忽略扫描此字段,不在excel中填充。
Controller层代码:
- @RequestMapping(value = "/exportList")
- @ResponseBody
- public void exportList(HttpServletResponse response, HttpServletRequest request) throws Exception {
-
- String fileName = "报表";
- //获取模版路径
- String templateFilePath= "D:\\模版.xls";
- //设置响应头内容,以vnd.ms-excel方式打开数据
- response.setContentType("application/vnd.ms-excel");
- //修改响应头信息
- response.setHeader("Content-disposition", String.format("attachment; filename=\"%s\"", fileName + "1.xls"));
- //告诉所有浏览器不要缓存
- response.setHeader("Cache-Control", "no-cache");
- response.setHeader("Pragma", "no-cache");
- //设置时间值属性的响应头信息,不要缓存
- response.setDateHeader("Expires", -1);
- //(设置输出的编码格式)指定输出到客户端的时候,这些文字使用UTF-8编码
- response.setCharacterEncoding("UTF-8");
-
- //使用模版创建工作簿
- ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream(),Student.class).withTemplate(templateFilePath).excelType(ExcelTypeEnum.XLS).build();
- WriteSheet sheet = EasyExcel.writerSheet().build();
-
- //开启自动换行,自动换行表示每次写入一条list数据是都会重新生成一行空行,此选项默认是关闭的,需要提前设置为true
- FillConfig fillConfig =FillConfig.builder().forceNewRow(Boolean.TRUE).build();
-
- List<Student> infos=null;
- infos=waterInfoService.excelExport();
-
- HashMap<String, String> mapFillData = new HashMap<>();
- mapFillData.put("date", "2023-4-23");
-
-
-
- //单行数据填充
- excelWriter.fill(mapFillData,sheet);
- //多行数据填充
- excelWriter.write(infos,sheet);
- //关闭流
- excelWriter.finish();
- }
EasyExcel.write(response.getOutputStream(),实体类的class).withTemplate(模版路径).excelType(ExcelTypeEnum.XLS).build();
EasyExcel默认excel文件后缀xlsx,如果要使用xls文件,需要设置excelType(ExcelTypeEnum.XLS)。
使用write()方法会自动关闭流,使用fill()方法需要手动关闭流。
生成文件如图:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。