阅读目录

  

  最近做项目,就碰到一个导出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. jupyter、flask、tornado、djiango安装

    安装了pip包的话直接使用: 1.安装jupyter:pip install jupyter 2.安装flask: pip install flask 3.安装tornado:pip install ...

  2. bzoj 1798 维护序列seq 线段树

    裸的线段树,注意标签下放就行了 多么痛的领悟,一定要开int64 /************************************************************** Pro ...

  3. ZigBee PHY层

    1. 介绍 ZigBee PHY层,即IEEE 802.15.4 PHY层,这里主要介绍了802.15.4-2003版本 PHY主要实现了如下功能 - 启动和关闭RF收发器 - 信道能量检测(Chan ...

  4. jenkins===当postman出现错误403 No valid crumb was included in the request的解决办法

    问题描述:当使用postman获取jenkins的json数据的时候,会返回标题中描述的错误 如下图: 将圈中的框,取消勾选! 再次运行正常! 这时候修改jenkins如下:

  5. 修改ueditor CSS

  6. Java 原子性引用 AtomicReference

    http://www.jianshu.com/p/882d0e2c3ea6 实现 原子操作 使用场景: 一个线程使用student对象,另一个线程负责定时读表,更新这个对象.那么就可以用AtomicR ...

  7. hdu 5191(思路题)

    Building Blocks Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)T ...

  8. 在.NET4.5项目中添加HttpClient引用的办法

    一. 创建新项目 1. 打开  Microsoft Visual Studio 201 0,然后从 “ 文件 ” 菜单中选择 “ 新建项目 ” .在模板列表中,选择  Visual C#.在该区域下面 ...

  9. 【转】Ubuntu 14.04.3上配置并成功编译Android 6.0 r1源码

    http://www.linuxidc.com/Linux/2016-01/127292.htm 终于成功把Android 6.0 r1源码的源码编译.先上图,这是在Ubuntu中运行的Android ...

  10. hdu5076

    好题,首先观察可得w[i][j]选择只有可能两种,一种比阀值大,一种比阀值小 比阀值大就一定选满足条件最大的w,比阀值小同样一定选满足条件最大的w 那么一个最小割模型就呼之欲出了,注意w可能是负数那么 ...