一件非常奇怪的事情-我建立了一个节点-快递+角度应用程序,使用‘文件保护程序’包在本地保存基于blob从服务器到达的文件。它在开发环境中运行良好(文件被下载到下载文件夹),但是在将应用程序部署到集成服务器之后--我无法看到.xls (excel)下载的文件(浏览器打开的“*.xml”文件运行良好)。在从服务器获取数据时,我仍然会看到加载图标(我还看到了相关SP的执行)。
以下是文件保存代码的相关部分: XML_TYPE = 'application/xml;charset=windows-1255';-无问题
'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8';= EXCEL_TYPE -问题
import * as FileSaver from 'file-saver';
public exportAsXML(xmlData: any, fileName : string ) //This is working fine
{
var blob = new Blob([xmlData], {type: XML_TYPE })
FileSaver.saveAs(blob, fileName + XML_EXTENSION);
}
private saveAsExcelFile(buffer: any, fileName: string): void //Not seen downloaded
{
const data: Blob = new Blob([buffer], {type: EXCEL_TYPE});
FileSaver.saveAs(data, fileName + EXCEL_EXTENSION);
}
发布于 2019-08-19 11:48:15
试试这个:
private saveFileToDisk(data, filename: string, contentType: string)
{
const blob = new Blob([data], { type: contentType });
var link = document.createElement('a');
link.href = window.URL.createObjectURL(blob);
link.download = filename;// "Report.csv";
link.click();
}
编辑:对于excel (.xlsx)文件,您可以这样传递contentType:
saveFileToDisk(data, filename, 'application/vnd.openxmlformatsofficedocument.spreadsheetml.sheet'))
发布于 2019-08-19 21:49:02
解决该问题的方法是导入包:而不是
import { Workbook, Row, Worksheet, Cell } from 'exceljs';
它应该是:
import { Workbook, Row, Worksheet, Cell } from 'exceljs/dist/exceljs';
https://stackoverflow.com/questions/57562045
复制相似问题