使用Ajax生成的Excel文件并下载的实例


Posted in Javascript onNovember 21, 2016

很久?]有??文章啦,今天分享一??如何在ASP.NET MVC里使用Ajax下?生成文件的方法,以下只是??人心得:

大家都???知道,在ASP.NET MVC里,如果通?Ajax?用后?控制器?r,可以返回一??JSON?ο螅??⒉荒苤苯臃祷匚募?ǔ?撬⑿马?面,那就不是Ajax啦),所以如果想用Ajax生成文件并下?的?,那只要?⑸?傻奈募?缺4娴椒?掌魃希?会嵩?⑽募??酵ㄟ^JSON返回,之後才可以?行下?,?然由於是??r性存放,所以?下?完后就需要?上?h除相??奈募??br />

以下是做法以??B生成Excel?槔?ㄉ??xcel的具?步?我就省略了,?并不是此文章的重?): 

1. 首先??建Action生成Excel文件

[HttpPost]
public JsonResult ExportExcel()
{
  DataTable dt = DataService.GetData();
  var fileName = "Excel_" + DateTime.Now.ToString("yyyyMMddHHmm") + ".xls";
  //?⑸?傻奈募?4娴椒?掌鞯呐R?r目?里
  string fullPath = Path.Combine(Server.MapPath("~/temp"), fileName);
 
  using (var exportData = new MemoryStream())
  {
    //如何生成Excel?里就不???明啦,我?里??xcel的操作使用的是 NPOI
    Utility.WriteDataTableToExcel(dt, ".xls", exportData);
 
    FileStream file = new FileStream(fullPath, FileMode.Create, FileAccess.Write);
    exportData.WriteTo(file);
    file.Close();
  }
 
  var errorMessage = "you can return the errors in here!";
 
  //返回生成的文件名
  return Json(new { fileName = fileName, errorMessage = "" });
}

2. ??建下?用的 Action

[HttpGet]
[DeleteFileAttribute] //Action Filter, 下?完后自??h除文件,????傩陨葬峤忉?
public ActionResult Download(string file)
{
  //到服?掌髋R?r文件目?下?相??奈募
  string fullPath = Path.Combine(Server.MapPath("~/temp"), file);
  //返回文件?ο螅?@里用的是Excel,所以文件?使用了 "application/vnd.ms-excel"
  return File(fullPath, "application/vnd.ms-excel", file);
}

3. 由於要做到下?完后自??h除文件,所以再??建一?? Action Filter

public class DeleteFileAttribute : ActionFilterAttribute
{
  public override void OnResultExecuted(ResultExecutedContext filterContext)
  {
    filterContext.HttpContext.Response.Flush();
    //???前filter context??Q成具?操作的文件并?取文件路?
    string filePath = (filterContext.Result as FilePathResult).FileName;
    //有文件路?胶缶涂梢灾苯?h除相?文件了
    System.IO.File.Delete(filePath);
  }
}

4. 最后在前?添加 Ajax ?用的代?:

//?里我使用了 blockUI 做loading...
$.blockUI({ message: '<h3>Please wait a moment...</h3>' });  
$.ajax({
  type: "POST",
  url: '@Url.Action("ExportExcel","YourController")', //?用相???ontroller/action
  contentType: "application/json; charset=utf-8",
  dataType: "json",
}).done(function (data) {
  //console.log(data.result);
  $.unblockUI();
  //接收返回的文件路?剑?宋募?@?r已保存到服?掌魃狭
  if (data.fileName != "") {
    //通??用 window.location.href 直接跳?到下? action ?行文件下?操作
    window.location.href = "@Url.RouteUrl(new { Controller = "YourController", Action = "Download"})/?file=" + data.fileName;
  }
});

5. 完!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Opacity.js
Jan 22 Javascript
prototype 学习笔记整理
Jul 17 Javascript
js常用代码段收集
Oct 28 Javascript
JSF中confirm弹出框的用法示例介绍
Jan 07 Javascript
js浏览器本地存储store.js介绍及应用
May 13 Javascript
完美兼容各大浏览器的jQuery插件实现图片切换特效
Dec 12 Javascript
javascript动态创建表格及添加数据实例详解
May 13 Javascript
JQuery EasyUI学习教程之datagrid 添加、修改、删除操作
Jul 09 Javascript
JavaScript this绑定过程深入详解
Dec 07 Javascript
微信小程序使用wxParse解析html的方法示例
Jan 17 Javascript
Vue源码解析之数据响应系统的使用
Apr 24 Javascript
如何利用vue实现波谱拟合详解
Nov 05 Javascript
javascript入门之数组[新手必看]
Nov 21 #Javascript
jQuery UI插件实现百度提词器效果
Nov 21 #Javascript
javascript中Number的方法小结
Nov 21 #Javascript
Bootstrap中定制LESS-颜色及导航条(推荐)
Nov 21 #Javascript
js实现HashTable(哈希表)的实例分析
Nov 21 #Javascript
详解js中call与apply关键字的作用
Nov 21 #Javascript
微信小程序购物商城系统开发系列-目录结构介绍
Nov 21 #Javascript
You might like
PHP下用rmdir实现删除目录的三种方法小结
2008/04/20 PHP
使用NetBeans + Xdebug调试PHP程序的方法
2011/04/12 PHP
php自定义函数实现JS的escape的方法示例
2016/07/07 PHP
thinkPHP5.0框架验证码调用及点击图片刷新简单实现方法
2018/09/07 PHP
新浪微博字数统计 textarea字数统计实现代码
2011/08/28 Javascript
你必须知道的JavaScript 中字符串连接的性能的一些问题
2013/05/07 Javascript
javascript删除option选项的多种方法总结
2013/11/22 Javascript
jQuery避免$符和其他JS库冲突的方法对比
2014/02/20 Javascript
angular.bind使用心得
2015/10/26 Javascript
关注jquery技巧提高jquery技能(前端开发必学)
2015/11/02 Javascript
JavaScript交换两个变量值的七种解决方案
2016/12/01 Javascript
vue数据双向绑定的注意点
2017/06/23 Javascript
JavaScript Drum Kit 指南(纯 JS 模拟敲鼓效果)
2017/07/23 Javascript
centos 上快速搭建ghost博客方法分享
2018/05/23 Javascript
vue quill editor 使用富文本添加上传音频功能
2020/01/14 Javascript
Selenium执行JavaScript脚本的方法示例
2020/12/31 Javascript
Python程序中的观察者模式结构编写示例
2016/05/27 Python
Python 常用的安装Module方式汇总
2017/05/06 Python
浅谈Python中的可变对象和不可变对象
2017/07/07 Python
python的pdb调试命令的命令整理及实例
2017/07/12 Python
Python2.7编程中SQLite3基本操作方法示例
2017/08/09 Python
matplotlib简介,安装和简单实例代码
2017/12/26 Python
Python selenium抓取微博内容的示例代码
2018/05/17 Python
python 集合 并集、交集 Series list set 转换的实例
2018/05/29 Python
flask框架url与重定向操作实例详解
2020/01/25 Python
美国LOGO设计公司:The Logo Company
2018/07/16 全球购物
美国最大的船只买卖在线市场:Boat Trader
2018/08/04 全球购物
购买正版游戏和游戏激活码:Green Man Gaming
2019/11/06 全球购物
大学生职业生涯规划方案
2014/01/03 职场文书
高中综合实践活动总结
2014/07/07 职场文书
中国梦演讲稿范文
2014/08/28 职场文书
社区务虚会发言材料
2014/10/20 职场文书
银行大堂经理培训心得体会
2016/01/09 职场文书
2016会计专业自荐信范文
2016/01/28 职场文书
浅谈如何写好演讲稿?
2019/06/12 职场文书
Nginx配置根据url参数重定向
2022/04/11 Servers