SpringMVC 下载XLS文档的设置
页面设置参考上文。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文档的设置的更多相关文章
- springmvc下载一个文档下载接口里的文档
A提供了一个文件下载的接口,在调用的时候可以直接在前端用a标签来调用 <a href="http://" target="_blank">下载< ...
- IIS下不能下载文件的docx文档,XLSX文档的设置方法(转)
IIS下不能下载文件的docx文档,XLSX文档的设置方法 Office 2007的的界面风格默认格式中都是.DOCX,XLSX,PPTX等等后缀,连结中包含此类文件时,界面风格默认什么打不开的其实只 ...
- Java导出freemarker实现下载word文档格式功能
首先呢,先说一下制作freemarker模板步骤, 1. 在WPS上写出所要的下载的word格式当做模板 2. 把模板内不固定的内容(例:从数据库读取的信息)写成123或者好代替的文字标注 3. 把固 ...
- 配置允许匿名用户登录访问vsftpd服务,进行文档的上传下载、文档的新建删除等操作
centos7环境下 临时关闭防火墙 #systemctl stop firewalld 临时关闭selinux #setenforce 0 安装ftp服务 #yum install vsftpd - ...
- NPOI(2.1.3)向excel中插入图片,xls文档图片插入成功,xlsx文档图片插入失败
众所周知,NPOI对xls和xlsx两个版本的excel文档的操作并没有一个统一的支持, 程序若想兼容这两个版本的操作,必须根据excel版本分别去调用HSSF和XSSF这两套操作库, 之前一直不明白 ...
- 手动下载 Xcode 文档
下载Xcode文档的方法有两个: 1. 自动下载:到在Xcode的Preserences中Downloads页面的Documentation,点击对应文档的下载. 2. 手动下载:到这个页面:http ...
- 安利一个免费下载VIP文档神器
今天安利给大伙一个非非非常好用的可以免费下载VIP文档的下载神器------冰点文库下载器,用过的人都说好.操作简单,小巧轻便,完全免费.支持百度.豆丁.畅享.mbalib.hp009.max.boo ...
- C#(MVC) Word 替换,填充表格,导出并下载PDF文档
近期做一个关于C# 操作 Word 模板 文档的功能模块,查阅资料,最终完美完成任务,记录下来,以便后面还会用到.
- 前端调用后台接口下载word文档的两种方法
1传统的ajax虽然能提交到后台,但是返回的数据被解析成json,html,text等字符串,无法响应浏览器下载.就算使用bob模拟下载,数据量大时也不方便 废话不多说:上代码(此处是Layui监听提 ...
随机推荐
- POJ1018 Communication System
Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 26738 Accepted: 9546 Description We ...
- 管理页面的类 PageHelper
using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Da ...
- 培训补坑(day1:最短路&two-sat)
经过12天的滚粗,终于迎来了暑期培训的结尾啦QAQ 结业考才考了90分,真是对不起孙爷(孙爷请收下我的膝盖) orz小粉兔怒D rank 1 获得小粉兔一只QAQ 由于这次12天的培训题目又比较多,算 ...
- linux内核情景分析之execve()
用来描述用户态的cpu寄存器在内核栈中保存情况.可以获取用户空间的信息 struct pt_regs { long ebx; //可执行文件路径的指针(regs.ebx中 long ecx; //命令 ...
- [置顶] Linux Malloc分析-从用户空间到内核空间【转】
转自:http://blog.csdn.net/ordeder/article/details/41654509 版权声明:本文为博主(http://blog.csdn.net/ordeder)原创文 ...
- (十)stm32 GPIO口复用,重映射 RCC_APB2Periph_AFIO
什么时候需要用到RCC_APB2Periph_AFIO--复用IO时钟的使用 需要用到外设的重映射功能时才需要使能AFIO的时钟 外部中断(EXTI)中与AFIO有关的寄存器是AFIO-EXTICR1 ...
- fork+exec 与system,popen区别
1.fork + exec fork用来创建一个子进程.一个程序一调用fork函数,系统就为一个新的进程准备了前述三个段,首先,系统让新的进程与旧的进程使用同一个代码段,因为它们的程序还是相同的,对于 ...
- 解决:java.lang.ArrayIndexOutOfBoundsException: 160 at com.alibaba.fastjson.serializer.SerializeWriter.writeStringWithDoubleQuote(SerializeWriter.java:868)
今天线上遇到一个问题,从hbase里读取出来的数据在转换json后输出时出现异常: java.lang.ArrayIndexOutOfBoundsException: 160 at com.aliba ...
- centos6.5 安装mysql
在centos6.5上通过yum安装mysql: 1. yum list |grep mysql (查看版本) 2.安装mysql yum install -y mysql-server mysq ...
- 如何在natTable表格上添加双击事件
在项目当中,有时候需要双击表格中的某一行触发一个事件或者一次数据请求,这时候,我们就需要在表格中绑定相关事件,思路实际上很简单,添加一个绑定事件就ok了,那么怎么添加呢?简单实现如下: 1.创建绑定双 ...