jsp下载excel文件
jsp下载excel文件的的实现方法很多,今天也遇到这个问题,乱敲了一阵,终于搞定了,记下来和朋友们分享吧。
假设需要下载excel文件的jsp页面名为:down.jsp
对应的后台action名为:downExcel.java(用struts实现,其他框架也类似)
在downExcel.java的添加downAction方法,实现下载步骤
public ActionForward downAction(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws IOException {
java.io.OutputStream o = response.getOutputStream();
byte b[] = new byte[500];
java.io.File fileLoad = new java.io.File(request.getRealPath("/WEB-INF/"+"/f.xls"));
//System.out.println(fileLoad.getPath());
response.reset();
response.setContentType("application/vnd.ms-excel");
response.setHeader("content-disposition",
"attachment; filename=text.xls");
long fileLength = fileLoad.length();
String length1 = String.valueOf(fileLength);
response.setHeader("Content_Length", length1);
java.io.FileInputStream in = new java.io.FileInputStream(fileLoad);
int n;
while ((n = in.read(b)) != -1) {
o.write(b, 0, n);
}
in.close();
o.close();
return null;
}
蓝色部分就是要下载的excel文件的路径,注意更改就可以了。
然后就是JSP页面部分了:
在down.jsp中放上一个‘下载’按钮:
<input type="button" value="下载模板" class="bt2" onclick="down();" />
还有一个脚本:
function down(){
var action = "<%=request.getContextPath() %>/downExcel.do?method=downAction";
window.location=action;
}
OK!搞定了 ,为什么要把下载的实现部分放到后台?原本我是将这部分放到另外一个页面(anthor.jsp)的,但是这样下载后anthor.jsp关闭不掉,即使在onload里写上window.close();也是不行的,时间仓促我也没有想其他办法解决,留待有心人来吧,呵呵,莫忘告诉我,O(∩_∩)O~
另外,看到某兄弟的实现是这样的,亮点在最后两句,我觉得有如果在页面实现下载步骤,应不出该兄弟所说,照贴如下:
<%
java.io.OutputStream o = response.getOutputStream();
byte b[] = new byte[500];
java.io.File fileLoad = new java.io.File(request.getRealPath("/WEB-INF/"+"/f.xls"));
//System.out.println(fileLoad.getPath());
response.reset();
response.setContentType("application/vnd.ms-excel");
response.setHeader("content-disposition",
"attachment; filename=text.xls");
long fileLength = fileLoad.length();
String length1 = String.valueOf(fileLength);
response.setHeader("Content_Length", length1);
java.io.FileInputStream in = new java.io.FileInputStream(fileLoad);
int n;
while ((n = in.read(b)) != -1) {
o.write(b, 0, n);
}
in.close();
out.clear();
out = pageContext.pushBody();
%>
jsp下载excel文件的更多相关文章
- 在线读取Mongodb数据库下载EXCEL文件
版本:Mongodb2.4.8 通过页面下载Excel文件 jsp <%@ page language="java" contentType="text/html; ...
- C# 之 下载EXCEL文件,自动用迅雷下载aspx
在浏览器中导出 Excel 得时候,如果浏览器绑定了迅雷,则会下载aspx文件. 解决:下载EXCEL文件,自动用迅雷下载aspx if (Request.QueryString["id&q ...
- 前端下载excel文件功能的三种方法
1 从后端接收json数据,前端处理生成excel下载 JsonExportExcel的github地址:https://github.com/cuikangjie/JsonExportExcel 这 ...
- 前端调用后端接口下载excel文件的几种方式
今天有一个导出相应数据为excel表的需求.后端的接口返回一个数据流,一开始我用axios(ajax类库)调用接口,返回成功状态200,但是!但是浏览器没有自动下载excel表,当时觉得可能是ajax ...
- JAVA web端JS下载excel文件
JSP代码如下: JSP端引入jquery.easyui.min.js库: <script type="text/javascript" src="<c:ur ...
- angularJS通过post方法下载excel文件
最近工作中遇到,要使用angularJS的post方法来下载excel的情况.网上找到一个帖子:http://stackoverflow.com/questions/22447952/angularj ...
- NodeJs实现下载Excel文件
nodejs作为一门新的语言,报表功能也不是十分完善. (1).js-xlsx : 目前 Github 上 star 数量最多的处理 Excel 的库,支持解析多种格式表格XLSX / XLSM / ...
- 【小坑】java下载excel文件
excel文件的导入导出是很常见的功能,这次做了个下载的功能,踩了一些坑,记下来避免以后重复踩…… 1.inputstream序列化问题 Could not write JSON document: ...
- 下载Excel文件功能通过火狐浏览器下载没有后缀名
最近遇到一个问题,用导出Excelwe文件使用Chrome浏览器是没有问题的,但是用火狐浏览器会出现下载的Excel文件没有后缀名.检查了很多东西都没找到原因.最后和之前的下载功能做对比发现,Exce ...
随机推荐
- leecode第九题(回文数)
class Solution { public: bool isPalindrome(int x) { ) return false; ;//这里使用long,也不判断溢出了,反正翻转不等就不是回文 ...
- MySQL学习(十二)
视图 view 在查询中,我们经常把查询结果当成临时表来看, view是什么?view可以看成一张虚拟表,是表通过某种运算得到的一个投影. 表的变化会影响到视图 既然视图只是表的某种查询的投影,所以主 ...
- 《UnityShader入门精要》学习笔记之渲染流水线
第一种分类方式: 图形管道(如下7步): 顶点数据 : 由3D模型传递的三角形网格 顶点着色 : 编写CG程序对各个顶点进行着色 生成几何图元 : 连接特定的顶点生成几何图元,例如连接三个顶点生成一个 ...
- 子序列的按位或 Bitwise ORs of Subarrays
2018-09-23 19:05:20 问题描述: 问题求解: 显然的是暴力的遍历所有的区间是不可取的,因为这样的时间复杂度为n^2级别的,对于规模在50000左右的输入会TLE. 然而,最后的解答也 ...
- Javascript 第五章总结:A trip to Objectville
前言 在以前的代码中,我们使用 primitive 类型的变量和 procedural manner 来执行脚本.但是,更好的办法是 object-oriented (面向对象)的.作者说:它能让我们 ...
- 如何使用mysql profiling功能分析单条查询语句
Mysql从5.1版本开始引入show profile来剖析单条语句功能 一. 查看是否支持这个功能 yes表示支持 mysql> show variables like 'have_profi ...
- MVC,MVVM,MVP的区别/ Vue中忽略的知识点!
按照顺序学习: https://scotch.io/courses/build-an-online-shop-with-vue/hello-world Vue Authentication And R ...
- sgu 154
Factorial 题意:能否找到一个数,它的阶乘后面0的个数为n? 数越大,阶乘后的0越多.用二分找.对于一个数x,它的阶乘,将小于等于它的数分解质因数.其中2的个数一定大于5的个数.因此计5的个数 ...
- 代码版本控制[version control]之Git
如何多人协同开发同一个项目? 使用代码版本控制[version control]软件, 目前市面上比较流行的代码版本控制器有: git,svn,csv 1. 使用git管理代码版本 本项目使用git管 ...
- SWUST OJ(955)
单链表上查找算法的实现 #include <stdio.h> #include <stdlib.h> typedef struct LinkNode //单链表节点结构的定义 ...