java生成excel
阿里出品的 EasyExcel,安利一波
添加依赖
-
<!--alibaba easyexcel-->
-
<dependency>
-
<groupId>com.alibaba</groupId>
-
<artifactId>easyexcel</artifactId>
-
<version>1.1.2-beta5</version>
-
</dependency>
七行代码搞定 Excel 生成
上面这段示例代码中,有两个点很重要:
-
①:WriteModel 这个对象就是要写入 Excel 的数据模型对象,等等,你这好像不行吧?表头 head,以及每个单元格内的数据顺序都没指定,能达到想要的效果么?别急,后面会讨论这块!
-
②:创建需要写入的数据集,当然了,正常业务中,这块都是从数据库中查询出来的。
-
回过头来,我们来看看
WriteModel
这个对象内部到底有什么幺蛾子!
EasyExcel 提供注解的方式, 来方便的定义 Excel 需要的数据模型:
①:首先,定义的写入模型必须要继承自 BaseRowModel.java
;
②:通过 @ExcelProperty
注解来指定每个字段的列名称,以及下标位置;
同时,上面定义的 createModelList()
方法也很简单,通过循环,创建一个写入模型的 List 集合
Web 下载示例代码
-
public class Down {
-
@GetMapping("/a.htm")
-
public void cooperation(HttpServletRequest request, HttpServletResponse response) {
-
ServletOutputStream out = response.getOutputStream();
-
ExcelWriter writer = new ExcelWriter(out, ExcelTypeEnum.XLSX, true);
-
String fileName = new String(("UserInfo " + new SimpleDateFormat("yyyy-MM-dd").format(new Date())).getBytes(), "UTF-8");
-
Sheet sheet1 = new Sheet(1, 0);
-
sheet1.setSheetName("第一个sheet");
-
writer.write0(getListString(), sheet1);
-
writer.finish();
-
response.setContentType("multipart/form-data");
-
response.setCharacterEncoding("utf-8");
-
response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
-
out.flush();
-
}
-
}