@RequestMapping("/dealer/chargebook/exportv.htm")
    public void getChargeBookList(int epmkey,String bdakey,int year,int month,HttpServletRequest request, HttpServletResponse response) {
        List<ChargeBook> list = chargeBookService.getEpmChargeBookList(epmkey,year,month,bdakey);
            String filename = year+"年"+month+"月份"+list.get(0).getCbkBdaCaption()+"物业缴费统计.xls";
            filename = encodeFilename(filename, request);//设置下载时客户端Excel的名称
            response.setHeader("Content-disposition", "attachment;filename="+filename);
            response.setContentType("application/vnd.ms-excel");
            String config = "/WEB-INF/chargebook/balance.xls";
            ExcelUtils.addValue("month", month);
            ExcelUtils.addValue("year", year);
            ExcelUtils.addValue("bdaCaption", list.get(0).getCbkBdaCaption());
            for (ChargeBook chargeBook : list) {
                chargeBook.setCbkRemark(rdStatus(chargeBook.getCbkStatus()));
            }
            ExcelUtils.addValue("list", list);
            ExcelUtils.addValue("service",rdStatus(0) );
            try {
                ExcelUtils.export(request.getSession().getServletContext(),config,response.getOutputStream());
            } catch (ExcelException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
    }
    
     public static String encodeFilename(String filename, HttpServletRequest request) {    
            /**  
             * 获取客户端浏览器和操作系统信息  
             * 在IE浏览器中得到的是:User-Agent=Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; Alexa Toolbar)  
             * 在Firefox中得到的是:User-Agent=Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.7.10) Gecko/20050717 Firefox/1.0.6  
             */    
            String agent = request.getHeader("USER-AGENT");    
            try {    
              if ((agent != null) && (-1 != agent.indexOf("MSIE"))) {    
                String newFileName = URLEncoder.encode(filename, "UTF-8");    
                newFileName = StringUtils.replace(newFileName, "+", "%20");    
                if (newFileName.length() > 150) {    
                  newFileName = new String(filename.getBytes("GB2312"), "ISO8859-1");    
                  newFileName = StringUtils.replace(newFileName, " ", "%20");    
                }    
                return newFileName;    
              }    
              if ((agent != null) && (-1 != agent.indexOf("Mozilla")))    
                return MimeUtility.encodeText(filename, "UTF-8", "B");    
            
              return filename;    
            } catch (Exception ex) {    
              return filename;    
            }    
         }

Excel 取值 : #foreach cb in ${list}  #end

ExcelUtils 导表实例的更多相关文章

  1. (原创)hibernate 一对多建表实例详解 附上各个注释的含义

    这个是hibernate的一对多建表实例:一的一端是部门(Department),对的一端是员工(Employee),下面贴上成员源代码:其中@mappedBy是加在@OneToMany一端,并且它的 ...

  2. .net解析csv(C#导表工具)

    前言 解析Excel有知名的NPOI库,(Java语言是POI),但是NPOI是不支持解析csv的. csv本质上也是文本文件,可以进行差异对比,更利于解决冲突. 本文对解析csv的几个.net的开源 ...

  3. sharding-jdbc之——分库分表实例

    转载请注明出处:http://blog.csdn.net/l1028386804/article/details/79368021 一.概述 之前,我们介绍了利用Mycat进行分库分表操作,Mycat ...

  4. ORACLE数据库导表

    今天在公司的server上面装一个系统,在数据库导表的时候一直导不进去,原先是10g的.dmp文件,导入11g.怀疑版本号不兼容,后来把.dmp表打开,把里面的版本号号改为11g,发现导入还是不行.i ...

  5. mysqldump导表

    mysqldump全量导表 mysqldump -hlocalhost -uroot -P3306 -p --skip-add-locks --skip-triggers test > test ...

  6. Postgresql的导表

    背景 前面已经介绍了常用的备份与恢复了,接下来介绍一下导表. 正文 很多情况,会有把数据导出的需求,轻重缓急总会有特别紧急的情况,但是又不是专业干db的人,还是记录下来,以防不时之需. 针对于导表,个 ...

  7. python-mysql数据库导表存excel后发邮件(实例2)

    需求:用户输入mysql数据库中某表名,将此表导入到excel中,将导出文件以邮件形式发出 设计思路: 1连接数据库 2读取表头(cur.description--获取表头,函数返回二维元组,采用列表 ...

  8. Qt StyleSheet样式表实例(转)

    QT论坛看到的,收藏一下! 在涉及到Qt 美工的时候首先需要掌握CSS 级联样式表. 下面将通过几个例子来介绍一下怎样使用Qt中的部件类型设计.自定义的前台背景与后台背景的颜色: 如果需要一个文本编辑 ...

  9. Django开发密码管理表实例【附源码】

    文章及代码比较基础,适合初.中级人员,高手略过 阅读此篇文章你可以: 获取一个Django实现增删改查的案例源码 了解数据加密的使用场景和方法以及如何在Python3中使用 背景介绍 DBA需要维护一 ...

随机推荐

  1. HTML5入门2---js获取HTML元素的值

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  2. Delphi 7事件的多处理机制

    Delphi 7事件的多处理机制Allen Tao2007-08-19 首先解释一下这个题目.在我使用Delphi 7的过程中发现,一个对象的事件只能被一个过程处理.如果多次给这个对象的事件赋给处理事 ...

  3. *EditPlus注册码在线生成

    http://www.jb51.net/tools/editplus/

  4. Linux 动画显示

    Linux最强大的一个特征就是它有大量的各种小命令工具,这也可以称做是它最有趣的一个地方了.在这些大量的有用的命令和脚本中,你会发现有少部 分命令工具不那么有用的——如果你不愿意说是完全没用处的话.你 ...

  5. Linux 查找软件安装路径

    root@kali:~# whereis sqlmap sqlmap: /usr/bin/sqlmap /usr/share/sqlmap /usr/share/man/man1/sqlmap..gz ...

  6. qtp与selenium2的区别

    QTP:  我觉得qtp适合的人: 对编程不是很熟悉的 厌烦了手动的功能测试,想快速进入自动化行业的 公司想快速自动化项目,并且对价格或者对盗版无所谓的 vbs脚本语言易于上手,可以培训你对代码的兴趣 ...

  7. 打开一个已经写好的Android studio工程的方法

  8. zlib代码生成

    1.主页下载zlib-1.2.8的source code的压缩包:F:\Develop Tools\zlib-1.2.8 2.下载安装cmake-2.8.1-win32-x86 3.用cmake生成z ...

  9. iOS开发:Swift多线程NSThread的使用

    一:创建线程,NSThread创建线程常用的三种方式: //1:手动创建启动 let thread:NSThread = NSThread(target: self, selector:"d ...

  10. websocket webworker

    对我来说最快的学习途径是实践,所以找两个东西来练手.一个是websocket一个是webwoker,今天先说第一个. 要理解socket就要先理解http和tcp的区别,简单说就是一个是短链,一个是长 ...