实现导出excel的思路是:前端通过ajax的post请求,到后台处理数据,然后把流文件响应到客户端,供客户端下载
文件下载方法如下:
public static boolean downloadLocal(HttpServletRequest request,String filePath, String fileName, HttpServletResponse response) throws Exception {
// 读到流中
InputStream inStream = new FileInputStream(filePath);// 文件的存放路径
// 设置输出的格式
response.reset();//清除首部的空白行
// 文件编码 处理文件名中的 '+'、' ' 特殊字符
String encoderName = null;
String userAgent = request.getHeader("USER-AGENT");
if(userAgent != null && userAgent.toLowerCase().indexOf("firefox") > 0){
encoderName = "=?UTF-8?B?" + (new String(Base64.encodeBase64(fileName.getBytes("UTF-8")))) + "?=";
}
else {
encoderName = URLEncoder.encode(fileName, "UTF-8").replace("+", "%20").replace("%2B", "+");
}
response.setHeader("Content-Disposition", "attachment;filename=\"" + encoderName + "\"");
response.setContentType("application/octet-stream; charset=utf-8");
response.setHeader("Accept-Ranges", "bytes");
OutputStream ot = response.getOutputStream();
// 循环取出流中的数据
byte[] b = new byte[1024];
int len;
try {
while ((len = inStream.read(b)) > 0)
{
ot.write(b, 0, len);
}
} catch (Exception e) {
return false;
}finally{
if(ot!=null){
ot.close();
}
if(inStream!=null){
inStream.close();
}
}
return true;
}
但是一直没有弹出保存提示,查资料后知道:ajax异步请求,dataType格式只支持有xml,html,script,json,jsonp,text,不支持二进制流文件类型
解决方法:
前端改成使用form表单提交方式即可
修改前端代码如下:
...
...
...
function exportCareerUnit(){
var o = {
sys:sysParam
};
$("#careerSubForm").val("");
var json = JSON.stringify(o);
$("#careerSubForm").val(json);
$("#careerForm").submit(); //表单提交
}
解决了问题!
“如果要将查询结果导出到Excel,只需将页面的Context-Type修改一下就可以了:header( "Content-Type: application/vnd.ms-excel">
如果希望能够提供那个打开/保存的对话框,设置Content-Disposition参数”
等忙过这阵,去试试~
asp.net导出excel并弹出保存提示框
asp.net导出excel并弹出保存提示框 2013-07-12 | 阅:1 转:78 | 分享 腾讯空间 人人网 开心网 新浪微博 腾讯微博 搜狐空间 推荐给朋友 举报 ...
JAVAWeb SSH框架 利用POI 导出EXCEL,弹出保存框
导入包这一些不多说,直接贴出关键代码,JSP只要点一个Action链接就行. poi包我是用:poi-3.11-20141221.jar 亲测有效: 效果: Action 类代码: private I ...
js在关闭页面前弹出确认提示【转载】
最近项目中出现个bug,就是导出数据后,会提示确认导航,其实实际需求并不需要这个提示,可能是之前遗留的问题.查了下资料是在触发了onbeforeunload事件,那么剩下的就是代码组织问题了. 众所周 ...
[UWP]在应用退出时弹出确认提示框
1. 需求 在应用退出时(点击右上角的关闭按钮)弹出一个确认按钮可以说是一个最常见的操作了,例如记事本的"你是否保存": 但这个功能在UWP上居然有点小复杂.这篇文章将解释如何实现 ...
CEfSharp下载文件 弹出保存框,实现 IDownloadHandler 接口
上节讲了如何将CefSharp集成到C#中,但集成后将web界面链接进ChromiumWebBrowser后,但web界面上下载附件的功能不好使咯. 百度了半天还是没搞定,只能去看官网的Excampl ...
弹出JS提示框
弹出JS提示框Page.ClientScript.RegisterStartupScript(typeof(string), "msg", "
INNO:检测程序是否已经安装,是则弹出卸载提示。
INNO:检测程序是否已经安装,是则弹出卸载提示. 作者:少轻狂 | 发布:2010-08-05 | 更新:2013-09-05 | 分类:部署 | Disposition | 热度:2816 ℃ 实 ...
Asp.Net下载页面,并弹出下载提示框
Asp.Net下载页面,并弹出下载提示框.在删除按钮里调用以下方法.
解决PL/SQL Dev连接Oracle弹出空白提示框
第一次安装Oracle,装在虚拟机中,用PL/SQL Dev连接远程数据库的时候老是弹出空白提示框,网上找了很久,解决方法也很多,可是就是没法解决我这种情况的. 没办法,只能自己研究,经过大概一天时间 ...
随机推荐
Javascript图片裁切
最近浏览了不少网站的图片裁切效果,大部分的做法如下图所示(借用一张脚本之家的图片),通过改变裁切框的大小来选取合适的位置. 但本文介绍的是另外一种裁切方式,裁切框由开发者决定,图片大小由用户决定,通过 ...
DELPHI设置枚举类型size
delphi枚举类型长度默认为2个字节(单字),而在C中枚举为4个字节(双字),如果需要跨这两个平台编程,传输结构时会由于数据长度不一造成灾难. 经过查找资料,原来delphi可以通过{$Z+} {$ ...
在Java中super和this的区别
摘要:在Java中我们会时常用到super及this的用法,现在我主要来区分一下super.和this.及superL()及this()之间的区别,来对它们的认识和了解: 1.this的用法在Java ...
NSDate与 NSString 、long long类型的相互转化
我的技术博客经常被流氓网站恶意爬取转载.请移步原文:http://www.cnblogs.com/hamhog/p/3560280.html,享受整齐的排版.有效的链接.正确的代码缩进.更好的阅读体验 ...
关于angular的ng-class条件判断
angular的ng-class的多条件判断是非常好用的,不需要写过多的判断去更改他相应的class, 但大家要记住,在repeat中使用ng-class多条件判断时, 错误写法:
echarts_部分图表配置_堆叠折线图
echarts基本图表使用: 1.获取包裹元素(var myChart = echarts.init(document.getElementById('thisId'));)2.设置option(op ...
UWP 常用文件夹
①KnownFolders KnownFolders.PicturesLibrary 等等列举 ②ApplicationData.Current ApplicationData.Current.Loc ...
css笔记 - transition学习笔记(二)
开始把7,8月份学的css整理一下 transition过渡 1. CSS transition transition过渡 :用于当元素 从一种样式变换为另一种样式 时为元素添加效果. 2. tran ...
P2564 [SCOI2009]生日礼物
题目背景 四川2009NOI省选 题目描述 小西有一条很长的彩带,彩带上挂着各式各样的彩珠.已知彩珠有N个,分为K种.简单的说,可以将彩带考虑为x轴,每一个彩珠有一个对应的坐标(即位置).某些坐标上可 ...
【LabVIEW技巧】LabVIEW OOP怎么学
前言 有很多人对LabVIEW OOP存在比较极端的看法,大致分为两类: 1. 绝对否定派认为LabVIEW OOP只不过是LabVIEW为了追求时髦,在面向过程的基础上用簇做了一些特性,实际上完全不 ...