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

转自: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超级群,大家也可以到群上下~
  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 20
    评论
YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值