jXLS - 用模板产生Excel报表

转载自:http://www.iteye.com/topic/75431

这将会是一个系列文章,介绍我们在开发过程中用到的一些open source library,覆盖到的范围有Excel, Email, FTP, XML, Monitor等等

=================主要内容分割线=================

jXLS ( http://jxls.sourceforge.net/ ) 是一个用来产生Excel文件的library,它非常小巧而且易用,能够用一个Excel模板加上数据来渲染产生最终的Excel文件,比直接用POI 这种底层的API来写要方便很多,尤其对于那些需要严格控制格式的Excel报表有非常大的帮助。

我们来看一下它文档上的例子,先准备好一个Excel模板:


这里用到forEach,outline,if这些tag,在它的文档里面有很详细的解释,如果输出结果要求很简单,也可以不需要tag。

然后准备好数据,放入到一个map,调用APi输出

Java代码
  1. List departmens =  new  ArrayList();  
  2. // initilize list of departments in some way   
  3. Map beans = new  HashMap();  
  4. beans.put("departments" , departments);  
  5. XLSTransformer transformer = new  XLSTransformer();  
  6. transformer.transformXLS(templateFileName, beans, destFileName);  
List departmens = new ArrayList();
// initilize list of departments in some way
Map beans = new HashMap();
beans.put("departments", departments);
XLSTransformer transformer = new XLSTransformer();
transformer.transformXLS(templateFileName, beans, destFileName);


           
这个就是输出的结果:


可以看到产生一份这样复杂的Excel,用jXLS来实现是很轻松愉快的一件事情。

利用jXLS和webwork (struts 2)良好的可扩展性,我们可以将2者集成在一起,通过实现一个Result(见附件),我们可以把action的所有属性都放到jXLS所要用的map里 面,让模板可以拿到action的属性,进行渲染输出,只需要在xwork.xml里面定义就可以了:
result type:

Java代码
  1. <result-type name= "excel"   class = "package.name.JxlsResult" />  
<result-type name="excel" class="package.name.JxlsResult"/>


和action result

Java代码
  1. <result name= "success"  type= "excel" >foo/bar.xls</result>  
<result name="success" type="excel">foo/bar.xls</result>



=================相关Lib分割线=================

excelutils ( http://excelutils.sourceforge.net/ ) 也是一个类似的项目,它本身已经提供了和webwork的集成,但是没有支持多个sheet渲染的功能,而且没有jXLS活跃。jXLS在最新版本里面还 提供了读取Excel的简便方法。

你可能感兴趣的:(.net,xml,struts,Excel,Webwork)