首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带Angular 7的FileSaver.js

带Angular 7的FileSaver.js
EN

Stack Overflow用户
提问于 2018-12-15 05:01:48
回答 1查看 2.2K关注 0票数 1

我有一个需要将数据下载为excel文件的用例。我使用的是Angular 7 (UI)和Java Spring REST API服务。REST API将生成Excel文件并将其发送到Angular,在那里我使用FileSaver.js模块将文件保存到磁盘。我在控制台上看到正在创建的blob和打印的大小,但文件没有保存到磁盘。

当我有Angular 4的时候,这是可行的。任何帮助都是非常感谢的。

此外,如果任何人可以建议一个替代节点模块来实现相同的结果,我洗耳恭听。

下面是Angular中的代码片段

代码语言:javascript
复制
this.myService.getDataAsXLSX(this.dataList).
    subscribe(byteArray => { 
            this.excelFileAsByteArray = byteArray; 
        }, error => console.log("There was an error."), 
        () => { 
            const blob = new Blob([this.excelFileAsByteArray.body], {type:'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet; ; charset=UTF-8'}); 
            console.log('Blob size in filtered = ' + blob.size); 
        FileSaver.saveAs(blob, "MyData-" + this.datePipe.transform(this.currentDate, 'MM-dd-yyyy') + ".xlsx"); } ); 

以下是REST API中的代码

代码语言:javascript
复制
    ByteArrayOutputStream outputStream = new ExcelWriter().createExcelWorkbook(dataList, fullName); 
    byte[] byteArray = outputStream.toByteArray();
    HttpHeaders responseHeaders = new HttpHeaders();

responseHeaders.set("Content-Type","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet; ; charset=UTF-8");

responseHeaders.set("Content-Disposition", "attachment;filename=MyData.xlsx"); responseHeaders.set("Expires", "0");

    return new ResponseEntity(byteArray, responseHeaders, HttpStatus.OK);
EN

回答 1

Stack Overflow用户

发布于 2018-12-15 13:46:14

您是否将responseType设置为'blob‘或'json’。内容类型为'application/vnd.ms-excel‘

代码语言:javascript
复制
public getDataAsXLSX(list: Array<any>) {
    return this.http.get(this.url, {
         headers: this.headers,
         responseType: 'blob' as 'json'
    });
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53786830

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档