jxls模板导出excel

先前有介绍POI工具导excel,缺点是excel样式控制比较麻烦。现在介绍模板方式导出excel.

这种方式控制控制样式比较好。先来看一个简单模板test_xtl.xls如下:

从上面的模板可以看出,我们需要在后台准备数据ListMap,它是一个Map的key对象名字,引用了一个Map.

 

excelMap.put("listMap", testDomain);

这里的Map的value就是我们需要的数据对象,它可以是普通的java对象,例如下面例子中引用的对象TestDomain ,

 

public class TestDomain { private List<Domain> domainList1 ;//sheet1的基础数据 private List<Domain> domainList2 ;//sheet2的基础数据 public List<Domain> getDomainList() { return DomainList; } public void setDomainList( List<Domain> DomainList) { this.DomainList = DomainList; } public List<Domain> getDomainList2() { return DomainList2; } public void setDomainList2( List<Domain> DomainList2) { this.DomainList2 = DomainList2; } }   

这里的Domain是个普通的javabean, 4个字段分别是name,c1,c2,remarks.

 

本文介绍jxl在web应用中的导出功能,下面是主要的代码:

 

 public void export(){ HttpServletResponse response = WebContext.getResponse(); HttpServletRequest request = WebContext.getRequest(); String basePath = request.getSession().getServletContext().getRealPath(""); //放置excel模板文件的位置 basePath = basePath+"/xls_templates/"; InputStream is = null; try { is = new BufferedInputStream(new FileInputStream(basePath+"test_xtl.xls")); } catch (FileNotFoundException e1) { e1.printStackTrace(); } TestDomain testDomain=getSheetsData(); //listMap在模板中引用的名字 Map map=new HashMap(); excelMap.put("listMap", testDomain); //关联模板 XLSTransformer transformer = new XLSTransformer(); HSSFWorkbook workBook = transformer.transformXLS(is, excelMap); //设置每个sheet的名字 String []sheetNames={"sheet_name1","sheet_name2"}; for(int i=0;i<sheetNames.length;i++){ workBook.setSheetName(i,sheetNames[i],HSSFWorkbook.ENCODING_UTF_16); } //输出excel String filename="abcdef.xls"; saveWorkbook(workBook,response,filename); try { is.close(); } catch (IOException e) { e.printStackTrace(); } } private void saveWorkbook(HSSFWorkbook resultWorkbook,HttpServletResponse response,String fileName){ try{ response.setHeader("content-disposition", "attachment; filename="+fileName); response.setContentType("application/msexcel"); OutputStream os =response.getOutputStream(); resultWorkbook.write(os); os.flush(); os.close(); }catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }   

 

 附:利用POI工具导出excel

 http://blog.csdn.net/ziliang871118/archive/2011/01/30/6169573.aspx

你可能感兴趣的:(String,HashMap,Excel,Class,domain,工具)