日期:2014-05-17  浏览次数:20784 次

jsp 直接导出报表有问题 各位大虾帮帮忙。。
<%@ page contentType="application/vnd.ms-excel;charset=gb2312"%>
<%@ taglib prefix="s" uri="http://www.springframework.org/tags" %>
<%@ page isErrorPage="false" %>
<%
  String year = (String)request.getAttribute("year");
  String str = year+"收入情况统计表.xls";
response.setHeader("Content-disposition","attachment;filename="+new String(str.getBytes(),"ISO8859-1"));%>


在jsp中使用了这行,
想要的效果是出来个excel,但是我写的内容全部的是直接显示到了JSP, 请问大虾们 application/vnd.ms-excel 是不是要导入什么包啊???
在线等。。。。

------解决方案--------------------
不需要的
------解决方案--------------------
利用excel, word等的html自动转换功能,明着是.xls, 骨子里是html; 然后利用web的指定下载文件名的方法,让客户端下载或者直接打开生成的EXCEL文件。1. 将一个含有范例数据 <table> ... </table> 的文本文件,后缀改为.xls ;(也可以将客户提供的EXCEL文件另存为HTML)2. 在excel中打开,然后随便修改点什么,比如每页都打印标题栏(在帮助中检索“每一页上都打印行列标志”,客户如果还需要美观的话,增加框线、颜色什么的),保存;结果得到一个html文本形式的 aaa.xls (也可以将客户提供的EXCEL另存为HTML, 后缀再改回来为.xls)3. 然后删除不必要的 width定义 、 <link ... 、 mso-width-alt:6624;width:155pt 等类似元素(文件减肥,不删也可以),4. 然后将生成的 *.xls 或者 *.html 改为*.jsp 或 *.asp , 数据内容用动态脚本生成,如有什么乱码的问题就编码转换,当然,数据库的数据需要 Html Encode 一下
具体如下:
testXLS.jsp: testEXCEL.jsp:<!-- 文件开始 file begin --><%@page contentType= "text/html;charset=GBK " %><% /* // 下面的不可使用, 反而造成问题 out.flush(); // 清除缓存,自动刷新 // 不读缓存 response.setHeader( "Pragma ", "No-cache "); response.setHeader( "Cache-Control ", "no-cache "); response.setDateHeader( "Expires ", 0); response.reset(); response.setContentType( "application/vnd.ms-excel "); */%><% // 设置响应头和下载保存的文件名 aaa.xls aaa.doc 都可以 , 文件名最好动态生成 // response.reset(); // 不可以有,否则是乱码 response.setContentType( "APPLICATION/OCTET-STREAM "); // response.setHeader( "Content-Disposition ", "attachment; filename=aaa.xls "); response.setHeader( "Content-Disposition ", "attachment; filename= "+ (new SimpleDateFormat( "yyyyMMddHHmmssSSS ")).format(new java.util.Date()) + ".xls "); // 自动生成文件名%>... excel另存为html 的文本内容 ...<html xmlns:o= "urn:schemas-microsoft-com:office:office "xmlns:x= "urn:schemas-microsoft-com:office:excel "xmlns= "http://www.w3.org/TR/REC-html40 "><head>
你看下这个流程吧