Easyui+Spring Mvc导出Excel:支持按模板样式导出、合并表头、合并单元格、多sheet

转载 2013年12月03日 13:01:10

转自:http://bbs.jeasyuicn.com/thread-328-1-1.html


群上常有人在问datagrid怎么导出到excel。其实导出可以分两种,一种是直接将页面的数据导出(即前台导出),一种是点击“导出”后再次请求后台,然后封装数据进行导出(即后台导出)。前台导出虽然可以不用再次请求数据,但其不足也是明显,如分页表格就无法用前台导出了。个人还是觉得后台导出实在。

        这个导出的Demo主要是跟大家分享我对poi的excel导出的操作进行封装的一套工具,目前这套工具支持按模板样式导出,支持合并表头、合并单元格、多sheet导出,支持小计功能(包括max、min、sum、avg、count),导出列宽按数据自适应。导出的数据支持List<Object[]>、List<Map>和List<JavaBean>,相信大多数返回的表格数据也是这几种类型了~
       工具使用比较简单,只需要写几行代码,就可以实现到导出功能,不用你再去关心poi的类和方法,不用再去拼得跟头牛一样了:
        1、response.setContentType("application/msexcel;charset=GBK");//设置导出为excel,并设置字符集为GBK编码
        2、查询数据,返回List<Object[]>、List<Map>或List<JavaBean>
        3、创建表头对象TableHeaderMetaData :
                String[] hearders = new String[] {"列1", "列2", ...,"列n",};
                TableHeaderMetaData headerMeta= ExcelUtils.createTableHeader(hearders);//ExcelUtils是封装好的工具类,直接调用createTableHeader即可
        4、如果是List<JavaBean>或List<Map>数据集,则需要定义个属性数组:
                String[] fields = new String[] {"code", "name", "sex", "blood", "addr"};//属性数组,写数据到excel时的顺序定位
        5、封装表格数据为:
                TableData td = ExcelUtils.createTableData(list, headerMeta,fields);//如果list是List<Object[]>数据集,fields为null即可
        6、导出:
               JsGridReportBase report = new JsGridReportBase(request, response);//导出工具类
               report.exportToExcel(title, "admin", td);//将TableData数据对象导出到excel
        OK了,导出的过程完毕。可以看到,需要写的也就那么几行代码,而且根本不需要你知道POI是个啥玩意,这些都已经封装到工具类的方法里面去了。
        这里要特别要注意:需要在JsGridReportBase工具类指定模板excel的路径private static String MODULE_PATH = "../../demo/module.xls";//模板路径

        源码下载地址:http://pan.baidu.com/s/1geVLgOF

       在线演示地址:http://eed.jeasyuicn.com/
          导出图片示例:
   
 
 
问题修复(demo未重新部署):
1、导出数据类型为Date或TimeSta mp报错问题修复
2、多表头动态列宽报错问题修复
优化:
1、列宽自适应:如导出列数据宽度大于列标题宽度,则按照数据宽度自适应列;如导出列数据宽度小于列标题宽度,则按列标题宽度自适应列。

2012-12-26更新:
1、支持单元格合并导出
2、支持小计功能。不同数据列可根据指定分组列进行小计,小计方式包括:max、min、avg、sum、count(分组记录数)

另代码已共享到 jquery easyui超级群,大家也可以到群上下~

相关文章推荐

spring在ssh框架中到底起到什么作用

在SSH框假中spring充当了管理容器的角色。我们都知道Hibernate用来做持久层,因为它将JDBC做了一个良好的封装,程序员在与数据库进行交互时可以不用书写大量的SQL语句。Struts是用来...
  • xh16319
  • xh16319
  • 2012年09月30日 00:30
  • 6161

Java实现POI导出Excel

Web框架为Struts2,所用jar包如下: ExportExcelAction.javaimport java.io.FileInputStream; import java.io.FileOu...

C# WinForm DataTable 导出 Excel 多行表头、合并单元格

本次的代码是根据以前的asp.net DataTable2Excel 类修改而来,并进行了优化,使用方法与asp.net版相同。 asp.net DataTable2Excel 类的文章链接:C# ...

C# DataTable 导出 Excel 进阶 多行表头、合并单元格、中文

[csharp] using System; using System.Collections.Generic; using System.Web; using System.Conf...

C# DataTable 导出 Excel 进阶 多行表头、合并单元格、中文文件名乱码

本文原创地址:http://blog.csdn.net/ranbolwb/article/details/8083983 ,转载请保留本行。 本例子是上一篇 DataTable 导出 Excel 的进...
  • ranbolwb
  • ranbolwb
  • 2012年10月18日 09:28
  • 12021

poi导出Excel报表多表头双层表头、合并单元格

效果图: controller层方法:   /**      *      * 导出Excel报表      * @param request      * @return    ...
  • dj0721
  • dj0721
  • 2017年05月18日 12:49
  • 339

所见即所得,使用Java将HTML解析为Excel,支持多级表头嵌套、单元格合并

最近项目需要实现如题“所见即所得”的功能,之前每次生成Excel都需要重新从数据库查询一遍,降低效率不说,那些嵌套的表头实在是很难用Sql嵌套拼接实现。而且这样做还没有通用性,不同的表格需要写不同的S...

jQuery EasyUI 合并表头单元格

分子公司 项目 风险检查次数 汇报风险个数 现场检查 调阅监控 查阅表单 总次数 现场检查 调阅监控 ...
  • ngaveup
  • ngaveup
  • 2014年08月19日 16:25
  • 3346

vc操作excel,包括合并单元格,新增,删除sheet,设置字体,底色(OLE/COM)

1.制作应用软件的时候,经常要把结果以报表的形式输出,当前使用较为广泛的当然是Excel表格,本文简略介绍在VC++6.0中如何使用Excel2003的库函数并对其进行编程。先创建一个对话框工程,命名...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Easyui+Spring Mvc导出Excel:支持按模板样式导出、合并表头、合并单元格、多sheet
举报原因:
原因补充:

(最多只允许输入30个字)