页面设置参考上文。SpringMVC 下载文本文档的设置

此文是关于xls文档下载的,这个文档使用Apache的POI生成,需要的jar包可以从下面地址下载:

http://pan.baidu.com/s/1i3IJttF

下面是controller代码,比上一篇文本的少很多:

    @RequestMapping("/downloadAnnotatorListXls")
    public ModelAndView downloadAnnotatorListXls(HttpServletRequest request,HttpServletResponse response){
        String fileName="annotatorList.xls";

        response.reset();// 不加这一句的话会出现下载错误
        response.setHeader("Content-disposition", "attachment;filename=" + fileName);   // 设定输出文件头
        response.setContentType("application/vnd.ms-excel");   // 定义输出类型 

        try {

            HSSFWorkbook xls=service.getAnnotatorListInXls();
            OutputStream ouputStream = response.getOutputStream();
            xls.write(ouputStream); 
            ouputStream.flush();
            ouputStream.close();   

        } catch (Exception e) {
            e.printStackTrace();
            logger.error(e);

            request.setAttribute("error", e.getClass());
            request.setAttribute("reason", e.getMessage());
            StackTraceElement[] arr=e.getStackTrace();
            request.setAttribute("stackTraceElements", arr);

            return new ModelAndView("pages/error/index.jsp");
        }

        return null;
    }

具体xls生成请参考:

public HSSFWorkbook getAnnotatorListInXls() throws Exception{
        StringBuilder sb=new StringBuilder();
        sb.append("    select");
        sb.append("        t1.id,");
        sb.append("        t1.ownerId,");
        sb.append("        t1.ownerName,");
        sb.append("        t1.annotatorId,");
        sb.append("        t1.name,");
        sb.append("        t1.fullName,");
        sb.append("        t1.language,");
        sb.append("        format(t1.planHour,2) as planHour");
        sb.append("    from");
        sb.append("        ownership t1 ");
        sb.append("    order by");
        sb.append("        id");
        String sql=sb.toString();

        List<?> ls=this.getJdbcTemplate().query(sql, new NameValueRowMapper());

        HSSFWorkbook wb = new HSSFWorkbook();
        HSSFSheet sheet = wb.createSheet("sheet1");

        // 表头颜色
        HSSFCellStyle blueStyle = wb.createCellStyle();
        blueStyle.setBorderTop(HSSFCellStyle.BORDER_THICK);
        blueStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);
        blueStyle.setFillForegroundColor(HSSFColor.SKY_BLUE.index);
        blueStyle.setFillPattern(CellStyle.SOLID_FOREGROUND);

        // 表头部分"ID,OwnerId,OwnerName,AnnotatorId,Name,FullName,Language,PlanHour\r\n"
        HSSFRow row = sheet.createRow(0);//建立新行

        HSSFCell cell =row.createCell((short)0);
        cell.setCellValue("ID");
        cell.setCellStyle(blueStyle);

        cell =row.createCell((short)1);
        cell.setCellValue("OwnerId");
        cell.setCellStyle(blueStyle);

        cell =row.createCell((short)2);
        cell.setCellValue("OwnerName");
        cell.setCellStyle(blueStyle);

        cell =row.createCell((short)3);
        cell.setCellValue("AnnotatorId");
        cell.setCellStyle(blueStyle);

        cell =row.createCell((short)4);
        cell.setCellValue("Name");
        cell.setCellStyle(blueStyle);

        cell =row.createCell((short)5);
        cell.setCellValue("FullName");
        cell.setCellStyle(blueStyle);

        cell =row.createCell((short)6);
        cell.setCellValue("Language");
        cell.setCellStyle(blueStyle);

        cell =row.createCell((short)7);
        cell.setCellValue("PlanHour");
        cell.setCellStyle(blueStyle);

        short rowNum=1;
        short columnNum=0;
        for(Object obj:ls){
            row = sheet.createRow(rowNum);//建立新行
            columnNum=0;

            List<NameValue> lsTemp=(List<NameValue>)obj;

            for(NameValue nv:lsTemp){
                cell =row.createCell(columnNum);
                cell.setCellValue(nv.getValue());
                columnNum++;
            }

            rowNum++;
        }

        return wb;
    }

SpringMVC 下载XLS文档的设置的更多相关文章

  1. springmvc下载一个文档下载接口里的文档

    A提供了一个文件下载的接口,在调用的时候可以直接在前端用a标签来调用 <a href="http://" target="_blank">下载< ...

  2. IIS下不能下载文件的docx文档,XLSX文档的设置方法(转)

    IIS下不能下载文件的docx文档,XLSX文档的设置方法 Office 2007的的界面风格默认格式中都是.DOCX,XLSX,PPTX等等后缀,连结中包含此类文件时,界面风格默认什么打不开的其实只 ...

  3. Java导出freemarker实现下载word文档格式功能

    首先呢,先说一下制作freemarker模板步骤, 1. 在WPS上写出所要的下载的word格式当做模板 2. 把模板内不固定的内容(例:从数据库读取的信息)写成123或者好代替的文字标注 3. 把固 ...

  4. 配置允许匿名用户登录访问vsftpd服务,进行文档的上传下载、文档的新建删除等操作

    centos7环境下 临时关闭防火墙 #systemctl stop firewalld 临时关闭selinux #setenforce 0 安装ftp服务 #yum install vsftpd - ...

  5. NPOI(2.1.3)向excel中插入图片,xls文档图片插入成功,xlsx文档图片插入失败

    众所周知,NPOI对xls和xlsx两个版本的excel文档的操作并没有一个统一的支持, 程序若想兼容这两个版本的操作,必须根据excel版本分别去调用HSSF和XSSF这两套操作库, 之前一直不明白 ...

  6. 手动下载 Xcode 文档

    下载Xcode文档的方法有两个: 1. 自动下载:到在Xcode的Preserences中Downloads页面的Documentation,点击对应文档的下载. 2. 手动下载:到这个页面:http ...

  7. 安利一个免费下载VIP文档神器

    今天安利给大伙一个非非非常好用的可以免费下载VIP文档的下载神器------冰点文库下载器,用过的人都说好.操作简单,小巧轻便,完全免费.支持百度.豆丁.畅享.mbalib.hp009.max.boo ...

  8. C#(MVC) Word 替换,填充表格,导出并下载PDF文档

    近期做一个关于C# 操作 Word 模板 文档的功能模块,查阅资料,最终完美完成任务,记录下来,以便后面还会用到.

  9. 前端调用后台接口下载word文档的两种方法

    1传统的ajax虽然能提交到后台,但是返回的数据被解析成json,html,text等字符串,无法响应浏览器下载.就算使用bob模拟下载,数据量大时也不方便 废话不多说:上代码(此处是Layui监听提 ...

随机推荐

  1. [03] react 测试

    测试是开发周期中的一个重要组成部分.没有测试的代码被称为:遗留代码.对于我而言,第一次学习 React 和 JavaScript 的时候,感到很有压力.如果你也是刚开始学习 JS/React,并加入他 ...

  2. VS MFC 添加菜单

    新建出来的基于对话框的MFC工程是没有菜单的,如何在对话框中添加菜单?又如何给菜单的菜单项添加事件应用响应?下面小编来具体描述一下,希望能帮助到一些人. 工具/原料   电脑一台 VS2010 方法/ ...

  3. Linux查看进程堆栈信息命令

    jps -lvm #查看进程IDjstack -l <进程ID> # 查看进程堆栈信息

  4. Kubernetes监控工具

    #镜像在谷歌上需要FQ#####################################监控工具#当前最新版本 heapster https://github.com/kubernetes/h ...

  5. functools模块方法学习(1):partial

    函数的partial应用 典型的,函数在执行时,要带上所有必要的参数进行调用.然后,有时参数可以在函数被调用之前提前获知.这种情况下,一个函数有一个或多个参数预先就能用上,以便函数能用更少的参数进行调 ...

  6. 出现函数重载错误call of overloaded ‘printfSth(double)’ is ambiguous

    class C: { public: void printfSth(int i) { cout<<"C::printfSth(int i):"<<i< ...

  7. 字符串进行富文本操作后末尾emoji表情显示会乱码

    问题描述: 1.UIlabel展示的text中包含emoji表情 2.emoji表情作为最后一个字符 在满足以上条件的前提下末尾的emoji会乱码. 寻找问题过程: 因为是在单独的机型上出现的问题,所 ...

  8. [thinkphp] APP_DEBUG开启之后session不稳定

    有时候在一个方法中写入了session, 在另一个方法中打印却什么都没有. 我这次的情况是网页上通过ajax传值到一个php函数,然后php把值写入session中.然后我在另一个php方法中打印se ...

  9. 牛客网练习赛18 A 【数论/整数划分得到乘积最大/快速乘】

    链接:https://www.nowcoder.com/acm/contest/110/A 来源:牛客网 题目描述 这题要你回答T个询问,给你一个正整数S,若有若干个正整数的和为S,则这若干的数的乘积 ...

  10. Codeforces Round #377 (Div. 2) A. Buy a Shovel【暴力/口袋里面有无限枚 10 元和一枚 r 面值的硬币,问最少可以买多少把价值为 k 的铁铲】

    A. Buy a Shovel time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...