前言
写这篇文章的原因,由于看到昨天群里有朋友为导出数据到Excel表格而烦恼。当时他使用的是POI导出Excel,不仅要写大量代码来画表格,还不美观。所以,今天就在这给大家讲一下如何用jxls模板导出Excel。
所需jar包
建立导出模板
注意:<jx:forEach items="${list}" var="l">标签跟${l.name}是同一列,并且不能对该行进行合并,结束位置也是。
模板导出工具类代码
package com.gxnj.utils; import net.sf.jxls.transformer.XLSTransformer; import org.apache.poi.ss.usermodel.Workbook; import java.io.FileInputStream; import java.io.IOException; import java.io.OutputStream; import java.util.Map; /** * @author src * 使用模板导出Excel表格工具类 * @date 2017-01-19 */ public class MyExportExcelUtils { public static void exportTempleExcel(Map beans, String srcPath, OutputStream os){ XLSTransformer transformer = new XLSTransformer(); try { //获得模板的输入流 FileInputStream in = new FileInputStream(srcPath); //将beans通过模板输入流写到workbook中 Workbook workbook = transformer.transformXLS(in, beans); //将workbook中的内容用输出流写出去 workbook.write(os); }catch (Exception e) { e.printStackTrace(); throw new RuntimeException(); }finally{ if(os!=null){ try { os.close(); } catch (IOException e) { e.printStackTrace(); } } } } }导出Excel表格方法
/** * 导出Excel表格 * @author src * @date 2017-7-04 */ @RequestMapping(params = "saveAsExcel") public void saveFSWAsExcel(HttpServletRequest request,HttpServletResponse response)throws Exception{ /**查出信息并放到map中*/ Map<String,Object> beans = new HashMap<String,Object>(); // beans.put("xm", xm); //报表主体数据 List<Map> list = questionnarieServiceI.getWenjExpList(request); //报表列表详情 beans.put("list", list); //获得模板路径 String path = request.getServletContext().getRealPath(""); String srcPath = path + File.separator +"/WEB-INF/xls/ExpFSWDemo.xls"; //准备输出流 OutputStream os = null; try { String fileName = "xx问卷"; response.setContentType("application/x-excel"); response.setHeader("Content-Disposition", "attachment;filename=" + new String(fileName.getBytes("gb2312"),"ISO-8859-1") +".xls"); os = response.getOutputStream(); MyExportExcelUtils.exportTempleExcel(beans,srcPath,os); } catch (Exception e) { e.printStackTrace(); } }刚才导出模板途中的list就是该方法报表主体数据list
搞定!
后面再分享导出所需jar包,需要的童鞋来拿。