jxls使用模板匯出Excel表格
阿新 • • 發佈:2019-02-11
前言
寫這篇文章的原因,由於看到昨天群裡有朋友為匯出資料到Excel表格而煩惱。當時他使用的是POI匯出Excel,不僅要寫大量程式碼來畫表格,還不美觀。所以,今天就在這給大家講一下如何用jxls模板匯出Excel。
所需jar包
建立匯出模板
注意:<jx:forEach items="${list}" var="l">標籤跟${l.name}是同一列,並且不能對該行進行合併,結束位置也是。
模板匯出工具類程式碼
匯出Excel表格方法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(); } } } } }
剛才匯出模板途中的list就是該方法報表主體資料list/** * 匯出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(); } }
搞定!
後面再分享匯出所需jar包,需要的童鞋來拿。