阅读目录

  

  最近做项目,就碰到一个导出excel表格的功能。原本是想利用web前台导出excel的,但是最后因为两点放弃了,第一点,因为中文乱码,第二点,有分页(在前台导出excel的话,只能导出表格当页的数据,不能导出全部的,所以这是有缺陷的。当然不是做不到,只是需要不断追加数据,这个就怪了),所以最后的方案就是由后台的小伙伴导出excel的文件流,然后我去请求他们的接口取。()

  一、get请求

当然使用get请求时,没有半点毛病,可以把代码提出来看看。

    window.open("/api/sims/exportDetail?msisdn="+handle($scope.searchMsisdn)+"&simState="
+ handle($scope.searchSimstate) +"&dateAdded="+ changeDate($scope.searchDateAdded,false)+
"&imei="+handle($scope.searchImei)+"&ratePlan="+ handle($scope.searchRatePlan)+
"&onlineState="+handle($scope.searchOnlineState));

  

  明眼人一看就知道,这是直接调链接的,然后url里面有参数,主要它excel导出文件流是正确的,那前台这块这么写,铁定没错。  

    $event.target.href = "/api/sims/exportDetail?msisdn="+handle($scope.searchMsisdn)+"&simState="
+handle($scope.searchSimstate)+"&dateAdded="+changeDate($scope.searchDateAdded,false)+
"&imei="+handle($scope.searchImei)+"&ratePlan="+handle($scope.searchRatePlan)+
"&onlineState="+handle($scope.searchOnlineState);

   

  二、post请求

  说到post请求还真是没做过,首先我在想如果是直接调用链接的话,那我就怎么把参数传给后台。然后就出现了我下面的代码

  

$http({
url: 'api/sims/expchsdetails',
method: "POST",
data: {"iccids":chkIccids}
}).success(function (data, status, headers, config) {
$event.target.href = "api/sims/expchsdetails";
    }).error(function (data, status, headers, config) {
      //upload failed
    }
);

  

  因为我想着,那我就就先请求,再访问链接,总应该对了吧。但心想还是有点怪怪的,因为这个链接一直是这个跟参数没毛线关系啊。要是请求之后能改变下url就好了。作为代码人士的港湾stackoverflow还是不错的,经过搜索”angularjs  post excel“  http://stackoverflow.com/questions/22447952/angularjs-http-post-convert-binary-to-excel-file-and-download

  最后代码就如下了:

  

$http({
url: 'api/sims/expchsdetails',
method: "POST",
data: {"iccids":chkIccids},
responseType: 'arraybuffer'
}).success(function (data, status, headers, config) {
//var filename = config.headers('Content-Disposition').split(';')[1].trim().substr('filename='.length);
var filename = "simDetail.xls";
var blob = new Blob([data], {type: "application/vnd.ms-excel"});
var objectUrl = URL.createObjectURL(blob);
//window.open(objectUrl); $event.target.download = filename;
$event.target.href = objectUrl;
$event.target.click();
}).error(function (data, status, headers, config) {
//upload failed
}
);

  

angular get/post 下载 excel的更多相关文章

  1. 360浏览器下载excel问题解决方式

    亲们有没有碰到过今天我遇到的这件事. 如果使用简单的链接.或者get方式提交的表单,去下载excel,那么360浏览器就会有问题. 问题是:它没把我用java生成的excel表格下载,而是去把我的列表 ...

  2. java的poi技术下载Excel模板上传Excel读取Excel中内容(SSM框架)

    使用到的jar包 JSP: client.jsp <%@ page language="java" contentType="text/html; charset= ...

  3. 在线读取Mongodb数据库下载EXCEL文件

    版本:Mongodb2.4.8 通过页面下载Excel文件 jsp <%@ page language="java" contentType="text/html; ...

  4. angularJS通过post方法下载excel文件

    最近工作中遇到,要使用angularJS的post方法来下载excel的情况.网上找到一个帖子:http://stackoverflow.com/questions/22447952/angularj ...

  5. asp.net 下载Excel (数据流,不保存)--客户端

    效果图: 前端页面 <html> <head> <title>Test For Excel</title> <script src="j ...

  6. Angularjs 通过WebApi 下载excel

    如果想知道 AngularJs 通过WebAPI 下载Excel.请看下文,这里仅提供了一种方案. 服务器端代码如下: protected HttpResponseMessage GenereateE ...

  7. 使用DateSet下载Excel

    这里我们使用Microsoft.Office.Interop.Excel.dll下载Excel,没有引用可点击下载 关键代码,ExcelHelper类 using System; using Syst ...

  8. 前端axios下载excel(二进制)

    需求:通过后端接口下载excel文件,后端没有文件地址,返回二进制流文件 实现:axios(ajax类似) 主要代码: axios:设置返回数据格式为blob或者arraybuffer 如: var ...

  9. 前端axios下载excel,并解决axios返回header无法获取所有数据的问题

    需求:通过后端接口下载excel文件,后端没有文件地址,返回二进制流文件 实现:axios(ajax类似) 主要代码: axios:设置返回数据格式为blob或者arraybuffer 如: var ...

随机推荐

  1. set .net principle

    var ticket = new FormsAuthenticationTicket(1, username, DateTime.Now, DateTime.Now.AddMinutes(FormsA ...

  2. 阻塞DOM

    DOM是解析后的HTML. 这些阻塞因素我们可以叫做 阻塞渲染的资源 ,例如 HTML.CSS(也包括web font)和 JavaScript. 请注意,图像是不会阻塞渲染的 ,所以如果有图像落在蓝 ...

  3. Swift开发学习(一):初始篇

    http://blog.csdn.net/powerlly/article/details/29351103 Swift开发学习:初始篇 关于 苹果公司于WWDC2014(Apple Worldwid ...

  4. 汉字hash问题(转)

    一.汉字编码的种类 汉字编码中现在主要用到的有三类,包括GBK,GB2312和Big5. 1.GB2312又称国标码,由国家标准总局发布,1981年5月1日实施,通行于大陆.新加坡等地也使用此编码.它 ...

  5. 修改ueditor CSS

  6. Vue cmd命令操作

    1.安装node(安装到电脑中,不同项目不需重复安装) 安装nodejs(如果不是在C:则需要配环境变量)2.打开cmd C:创建一个文件夹(名字不要用node) 1.进入该文件夹 2.node -v ...

  7. 前段基础JavaScript

    JavaScript概述 JavaScript的历史 1992年Nombas开发出C-minus-minus(C--)的嵌入式脚本语言(最初绑定在CEnvi软件中).后将其改名ScriptEase.( ...

  8. hdu 5175(数论)

    Misaki's Kiss again Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Othe ...

  9. python2.7.12自带pip吗?

    是的,在安装python2.7.12时自带pip安装包,可以在python安装包Scripts下面可以看到.

  10. Python shell 控制台,有个快捷键可以向dos那样通过上下键来选择之前输入的内容?

    Alt + p 往前: Alt+n 从头开始历史输入