我有一个需要将数据下载为excel文件的用例。我使用的是Angular 7 (UI)和Java Spring REST API服务。REST API将生成Excel文件并将其发送到Angular,在那里我使用FileSaver.js模块将文件保存到磁盘。我在控制台上看到正在创建的blob和打印的大小,但文件没有保存到磁盘。
当我有Angular 4的时候,这是可行的。任何帮助都是非常感谢的。
此外,如果任何人可以建议一个替代节点模块来实现相同的结果,我洗耳恭听。
下面是Angular中的代码片段
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中的代码
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);发布于 2018-12-15 13:46:14
您是否将responseType设置为'blob‘或'json’。内容类型为'application/vnd.ms-excel‘
public getDataAsXLSX(list: Array<any>) {
return this.http.get(this.url, {
headers: this.headers,
responseType: 'blob' as 'json'
});
}https://stackoverflow.com/questions/53786830
复制相似问题