赞
踩
使用阿里的EasyExcel下载实现很容易,这次遇到一个需求,要在每个sheet的最上面加上固定的文字,举个例子,如下模板:
第一种方法合并单元格,然后设置背景色、字体。但是这个方法个人觉得会有点麻烦。于是有了第二个方法,设置为模板,然后读取模板,往里面填充数据。实操起来!!!
1、首先我们准备一个模板。
这里我创建了五个sheet,每个sheet的数据是一样的,只不过固定文字不一样(最上面的那一部分)。
把这个模板放在你项目目录中,我放在了src\main\resources\template\testTemplate.xlsx下,这样读取文件会方便一点,使用相对路径就行,即使后面把程序打包丢到服务器,也是兼容的。
注意:表头下一行的.{xxx}表示填充list,xxx跟你的字段命名一样。
2、代码实现
/** * 实现多个sheet返回不同数据,下面例子是相同数据,不影响。是可以变的。 * **/ public void exportTest(HttpServletResponse response) throws IOException { String fileName = System.currentTimeMillis() + "测试多sheet填充数据" + ".xlsx"; ExcelDataUtil.setResponseHeader(response, fileName); ClassPathResource classPathResource = new ClassPathResource("template/testTemplate.xlsx"); InputStream inputStream = classPathResource.getInputStream(); ExcelWriter excelWriter = null; try { excelWriter = EasyExcel.write(response.getOutputStream()).withTemplate(inputStream) .excelType(ExcelTypeEnum.XLSX).build(); excelWriter.fill(fillData(), EasyExcel.writerSheet(0).build()); excelWriter.fill(fillData(), EasyExcel.writerSheet(1).build()); excelWriter.fill(fillData(), EasyExcelFactory.writerSheet(2).build()); excelWriter.fill(fillData(), EasyExcelFactory.writerSheet(3).build()); excelWriter.fill(fillData(), EasyExcelFactory.writerSheet(4).build()); excelWriter.finish(); } finally { if (excelWriter != null) { excelWriter.finish(); } } } private List<FillData> fillData() { List<FillData> list = ListUtils.newArrayList(); for (int i = 0; i < 10; i++) { FillData fillData = new FillData(); list.add(fillData); fillData.setName("张三"); fillData.setNumber(5.2); fillData.setDate(new Date()); } return list; }
3、生成的文件
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。