繁体   English   中英

使用Aspose.Cells和Angular 2前端从asp.net Web API后端保存Excel电子表格时遇到问题

[英]Having trouble saving Excel spreadsheet from asp.net web api backend using Aspose.Cells, and Angular 2 front end

在我的ASP.NET Web API后端上,我有Aspose.Cells制作电子表格。 我已经将其保存在本地,并且电子表格很好,但是现在我试图将其托管在服务器上,因此我必须通过HTTP响应发送电子表格。 在我的Web API路线的末尾,我有以下代码:

workbook.Save(HttpContext.Current.Response, output.xls, ContentDisposition.Inline, new XlsSaveOptions());
HttpContext.Current.Response.End();

这会发送响应,您可以在Chrome开发工具中看到此响应: 在此处输入图片说明

如您所见,主体只是乱码,我假设只是二进制。 在客户端上,我的订阅方法内部的打字稿接收响应,如下所示:

var blob = new Blob([data._body], { type: 'application/vnd.ms-excel' });
        var url = window.URL.createObjectURL(blob);
        window.open(url);

这样会保存文件,其名称类似于f811c3bc-2eea-4394-b463-93c61ccc7677.xls,而在excel警告我该文件的格式与扩展名不同之后,电子表格中的文件看上去又像是乱七八糟的:
在此处输入图片说明

“详细信息”和“现场细节”这两个词应该放在其中,因此至少我想要显示一些内容,但显然不完全是。 我究竟做错了什么? 这应该是一个包含20个以上标签的电子表格,其中几个标签最多可包含数千行,而其他标签则少于十个。

编辑:我已经解决了以后搜索任何人的问题。 在HTTP请求选项上,您需要将响应类型设置为ArrayBuffer。 我也切换到使用Filesaver.js,尽管不确定是否确实需要这样做。

恐怕Web浏览器无法理解XLS(Excel 2003)和XLSX(Excel 2007及更高版本)格式。 只有Microsoft Excel可以理解。 这意味着您无法在Web浏览器中显示Excel文件。 您可以只要求用户下载它们,然后用户必须自己在Microsoft Excel应用程序中打开它们。

但是,某些浏览器理解(或具有插件) Pdf格式 如果要显示Excel文件的内容,请使用Aspose.Cells将其渲染为Pdf,然后,如果用户使用的是Google Chrome,FireFox等,则可以内联查看它。

无论如何,您必须将其作为附件发送。 请像这样更改您的代码。

workbook.Save(HttpContext.Current.Response, output.xls,ContentDisposition.Attachment, new XlsSaveOptions());
HttpContext.Current.Response.End();

注意: 我在Aspose担任开发人员布道者

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM