angularjs 通过http下载php生成的excel的方法
来源:互联网 发布:大宗师 外网端口 编辑:程序博客网 时间:2024/06/16 09:58
使用PHPExcel插件的同学们都知道,导出excel是直接将生成内容修改content-type来将内容作为文件下载的,这时候需要页面上有一个url,通过点击来下载。
那么问题来了,如果在生成excel时有请求参数,只能通过js的http请求,这时候怎么下载呢?
研究了一下,有以下几种方式:
- angularjs创建a标签模拟下载
// 创建a标签模拟下载function exportExcel(params, filename) { return $http({ url: '/api/exportExcel', method: "POST", headers: { 'Content-type': 'application/json' }, params: params, responseType: 'arraybuffer' }).success(function (data) { var blob = new Blob([data], {type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"}); var objectUrl = URL.createObjectURL(blob); var a = document.createElement('a'); document.body.appendChild(a); a.setAttribute('style', 'display:none'); a.setAttribute('href', objectUrl); a.setAttribute('download', filename); a.click(); URL.revokeObjectURL(objectUrl); });}
这个方式中要注意,如果传输的是xls,也就是excel5文件,type要设置为application/vnd.ms-excel 或application/x-excel。
2. js将请求参数生成url,创建a标签
// 生成下载url $scope.data.down_url = "../c_potential/get_excel?end_time="+$scope.end_date+"&liable="+liable+"&nickname="+$scope.data.nickname+"&province="+$scope.data.province_cur+"&start_time="+$scope.start_date;
然后将url绑定到某个a标签中,这种方式适合参数较少的情况,而且数据不会经过二次处理,不易发生error,唯一的缺点是需要处理两次,可以设置两个按钮,一个为生成,将参数写入url中,第二个按钮为下载excel。虽然用户是两次操作,但实际上只发生了一次http请求,不会影响性能。
3. 先生成后下载
第三种方式类似第二种,首先生成excel文件,储存到服务器,然后下载。涉及到磁盘IO,所以性能比较低,不推荐这种方式,只是作为一个方法记录下来。
angularjs模拟下载的方式最方便,但有可能出现error,第二种方式最保险。
阅读全文
0 0
- angularjs 通过http下载php生成的excel的方法
- AngularJS通过post方法下载excel文件
- angular2/angular4 如何通过$http的post方法请求下载二进制的Excel文件
- 通过jxl生成excel的一般方法
- PHP生成Excel,然后另存为的方法
- php生成excel的方法一
- php生成excel文件的多种方法
- PHP实现HTTP断点续传下载的方法
- HTML网页设计之PHP下载生成的excel表格
- angular2 通过get方法请求下载二进制的Excel文件
- asp.net生成Excel并导出下载的实现方法
- 如何通过Java实现生成excel并通过流的方式返回,提供下载!!
- PHP通过table标签实现输出EXCEL的方法
- php最简单的方法通过url下载图片。
- php生成EXCEL的东东
- java 生成Excel 的方法
- jxl下载excel的下载方法
- Excel生成及下载的JSF实现!
- 一个java面试题:一个农夫养了一头牛,三年后,这头牛每年会生出一头牛,生出来的牛三年后又可以每年生出一头牛,不考虑牛的性别和生死,问农夫10年后有多少头牛?
- 【数位Dp】windy数
- Openwrt pppoe demand拨号问题
- freemaker中配置文件freemarker.properties详解
- 日记(周中)
- angularjs 通过http下载php生成的excel的方法
- Python学习笔记(3)
- consul分布式集群搭建&简单功能测试&故障恢复
- Java与C语言混合编程
- linux 网络设置基础知识整理复习(二) ifcfg-eth文件配置
- ES Java API
- Python
- 购物车保存
- 递归+动态规划 矩阵最小路径和