angularjs实现Excel导出

为你画地为牢 发布于 2018/07/10 14:05
阅读 2K+
收藏 0

【开源中国 APP 全新上线】“动弹” 回归、集成大模型对话、畅读技术报告”

1、controller.js

 
    hkdd.excel=function(){
     var hkkds={
       headers: { 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'},
      "zt": hkdd.searchForm.hkzt,
      "realname":hkdd.searchForm.realname
     };
     
      hkdd_service.excelport(hkkds).then(function(res){
      hkdd.list=res.list;
      hkdd.searchForm=res.page;
     });
    }

2、service.js

service.excelport = function(searchForm){
     
     /*
     var res = $http({        url: baseUrl+'/hkdd/excelexport',  
            method: "POST",//接口方法
            params: searchForm,
            headers: {
                'Content-type': 'application/json'
            },
            responseType: 'arraybuffer'
        }).success(function (data) {
         alert(data);
         var blob = new Blob([data], {type: "application/vnd.ms-excel"});
            var objectUrl = URL.createObjectURL(blob);
            var filename="还款订单"+'.xls';
            if (window.navigator.msSaveOrOpenBlob) {// For IE:
                navigator.msSaveBlob(blob, filename);
            }else{ // For other browsers:
                URL.revokeObjectURL(objectUrl);
            }
        }).error(function (data) {
         alert(data.message);
        });
     
      return res;*/

3、后台代码

@RequestMapping(value = "/ngres/hkdd/excelexport")
 public void excelexcport(@RequestBody String content,HttpServletRequest request, HttpServletResponse response) throws ParseException {
   JSONObject jsonObj = JSONObject.fromObject(content);
   // 分页对象
   Page page = getPage(jsonObj);
   TcMemberLoan record = new TcMemberLoan();
   if(jsonObj.containsKey("realname")){
    record.setRealname(jsonObj.getString("realname"));
    System.out.println("bm:"+jsonObj.getString("realname"));
   }
   if(jsonObj.containsKey("zt")){
    record.setZt(jsonObj.getString("zt"));
   }
   
   List<TcMemberLoan> olist = tcMemberLoanService.selectByDdxx(record);
   Map<String, Object> map = new HashMap<String, Object>();
   map.put("list", olist);
   map.put("status", ExcelEnum.DDGL.getCode());
   String out = PoiCxgl.exportExcel(map,request);
   DownLoad.download(out, response);
   return;
 }

 

 

 

后台是已经生成了文件,我怎样在前端获取并下载呢;以前用jQuery的话,直接是window.location.href=”路径”,页面就会直接下载,Angularjs中该如何实现呢??

 

 

加载中
0
O
OMBGZ

一般不都是后台接口自己设置response参数,当前端请求这个接口的时候,可直接下载的。没必要后台返回文件的url,再让前端去下载

0
上海什么大学
上海什么大学

简单。

angular
  .element('<a/>')
  .attr({
    href: objectUrl,
    target: '_blank',
    download: fileName,
  })[0].click();

 

OSCHINA
登录后可查看更多优质内容
返回顶部
顶部