编程自学免费网站,北海网站建设网络公司,百度点击软件,网站展示文章目录 前言制定模板1、限定模板数据的范围2、设定报表展示项 编写测试类1、将xls模板文件放于 resource 下的 doc文件夹中2、导入依赖文件3、编写接口和导出逻辑 效果预览结论 前言
在之前的博客中Springboot——使用jxls实现excel模板导出excel#xff0c;具体说明了jxls… 文章目录 前言制定模板1、限定模板数据的范围2、设定报表展示项 编写测试类1、将xls模板文件放于 resource 下的 doc文件夹中2、导入依赖文件3、编写接口和导出逻辑 效果预览结论 前言
在之前的博客中Springboot——使用jxls实现excel模板导出excel具体说明了jxls框架的基本使用。
除了最简单的单列表展示外jxls还具有同sheet页展示多个列表的能力接下来一起继续探究。
制定模板
1、限定模板数据的范围
采取下面的批注指定需要渲染显示的报表范围。 这里的范围只考虑第一行的范围 命令如下所示
jx:area(lastCell”H15”)2、设定报表展示项
报表一只显示单条数据。
报表二进行列表展示并设置批注如下所示
jx:each(itemsdataList2 varitem lastCellC8)报表三与报表二中的批注一样只是接收参数变量名不同。批注如下所示
jx:each(itemsdataList3 varitem lastCellC12)编写测试类
1、将xls模板文件放于 resource 下的 doc文件夹中 2、导入依赖文件
!-- excel 填充 --
dependencygroupIdorg.jxls/groupIdartifactIdjxls/artifactIdversion2.8.1/version
/dependency
dependencygroupIdnet.sf.jxls/groupIdartifactIdjxls-core/artifactIdversion1.0.6/version
/dependency
dependencygroupIdorg.jxls/groupIdartifactIdjxls-poi/artifactIdversion2.8.1/version
/dependency3、编写接口和导出逻辑
RequestMapping(/ss)
public void download(HttpServletRequest request,HttpServletResponse response) throws Exception {MapString, Object map new HashMap();map.put(name1,xiangjiao);map.put(age1,10);map.put(are1,中国);// 报表二ListMapString, Object dataList new ArrayList();for (int i 0; i 10; i) {MapString, Object params new HashMap();params.put(name2,1_i);params.put(age2,xj_i);params.put(are2,22);dataList.add(params);}// ${item.num}map.put(dataList2,dataList);// 报表三ListMapString, Object dataList3 new ArrayList();for (int i 0; i 10; i) {MapString, Object params new HashMap();params.put(name2,1_i);params.put(age2,xj_i);params.put(are2,22);dataList3.add(params);}// ${item.num}map.put(dataList3,dataList3);export(map,test.xls,666.xls,response);
}public static void export(MapString, Object dataMap, String reportName,String fileName, HttpServletResponse response) throws IOException {Resource resource new ClassPathResource(/doc File.separator reportName);InputStream in resource.getInputStream();// 这里的context是jxls框架上的context内容Context context PoiTransformer.createInitialContext();context.toMap().putAll(dataMap);Workbook workbook WorkbookFactory.create(in);// Changing name of the first sheetworkbook.setSheetName(0, sheet1);PoiTransformer transformer PoiTransformer.createTransformer(workbook);OutputStream out response.getOutputStream();transformer.setOutputStream(out);// 文件名 - 解决中文乱码问题String filename URLEncoder.encode(fileName, UTF-8);// 设置响应编码response.setCharacterEncoding(UTF-8);response.setContentType(application/x-download);response.setHeader(Content-Disposition, attachment;filename filename);JxlsHelper.getInstance().processTemplate(context, transformer);in.close();out.flush();out.close();
}效果预览 结论
jxls能够完美的实现样式自定义、单数据、多报表集成。