EasyExcel使用模板填充数据
public void fillExcel(HttpServletResponse response) throws IOException { ServletOutputStream out = response.getOutputStream(); response.setContentType("multipart/form-data"); response.setCharacterEncoding("UTF-8"); //文件名字 String fileName = "demo.xlsx"; response.setHeader("Content-disposition", "attachment;filename=" +fileName); //文件模板输入流,将excel模板放到resources目录下 InputStream inputStream = new ClassPathResource("templates/demo.xlsx").getInputStream(); //标题数据 FillTitle fillTitle = new FillTitle(); fillTitle.setTitleDate(new Date()); //列表数据 List<FillData> list = new ArrayList<>(); for (int i = 0; i < 10; i++) { FillData fillData = new FillData(); fillData.setName("张三"); fillData.setNumber(5.2); list.add(fillData); } ExcelWriter writer = EasyExcel.write(out).withTemplate(inputStream).build(); WriteSheet sheet = EasyExcel.writerSheet(0).build(); //填充列表开启自动换行,自动换行表示每次写入一条list数据是都会重新生成一行空行,此选项默认是关闭的,需要提前设置为true FillConfig fillConfig = FillConfig.builder().forceNewRow(true).build(); //填充标题 writer.fill(fillTitle,sheet); //填充数据 writer.fill(list,fillConfig,sheet); //填充完成 writer.finish(); out.flush(); }
标题实体类,数据实体类
@Data public class FillData { private String name; private double number; private Date date; } @Data public class FillTitle { private Date titleDate; }
注意:
当打包成jar时,读取resources下的excel会遇到报错,此时添加如下maven配置
<plugins> <!-- 让maven不编译xls文件,但仍将其打包 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <configuration> <nonFilteredFileExtensions> <nonFilteredFileExtension>xls</nonFilteredFileExtension>
<!--不加这一行,xlsx文件会被过滤,然后在maven build的时候,去target下看对应的xlsx就是损坏的-->
<nonFilteredFileExtension>xlsx</nonFilteredFileExtension> </nonFilteredFileExtensions> </configuration> </plugin> </plugins>
分析:
maven中默认只能读取resources文件夹下的资源,如果要读取其他路径下的资源文件,那么就需要用到maven-resources-plugin这一插件,然后我们无法打开下载的excel文件有可能是因为编译后的文件与我们本地文件不一样;于是我们需要加上配置代码,让tomcat不编译该类文件即可;
分类:
springboot2
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律