Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Aspose.Cells和Angular 2前端从asp.net web api后端保存Excel电子表格时遇到问题_Javascript_Asp.net_Angular_Asp.net Web Api_Aspose Cells - Fatal编程技术网

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

Javascript 使用Aspose.Cells和Angular 2前端从asp.net web api后端保存Excel电子表格时遇到问题,javascript,asp.net,angular,asp.net-web-api,aspose-cells,Javascript,Asp.net,Angular,Asp.net Web Api,Aspose Cells,在我的ASP.NETWebAPI后端,我有一个Aspose.Cells来制作电子表格。我一直在本地保存它,电子表格很好,但是现在我试图将它托管在服务器上,我必须通过HTTP响应发送电子表格。在我的web api路线的末尾,我有以下代码: workbook.Save(HttpContext.Current.Response, output.xls, ContentDisposition.Inline, new XlsSaveOptions()); HttpContext.Current.Respo

在我的ASP.NETWebAPI后端,我有一个Aspose.Cells来制作电子表格。我一直在本地保存它,电子表格很好,但是现在我试图将它托管在服务器上,我必须通过HTTP响应发送电子表格。在我的web api路线的末尾,我有以下代码:

workbook.Save(HttpContext.Current.Response, output.xls, ContentDisposition.Inline, new XlsSaveOptions());
HttpContext.Current.Response.End();
这将发送响应,可以在Chrome开发工具中看到:

正如你所看到的,物体只是随机的胡言乱语,我假设它是二进制的。在客户端上,接收响应的subscribe方法中的my typescript如下所示:

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多个选项卡的电子表格,其中几个选项卡上最多有几千行,其他选项卡上不到10行


编辑:我已经为将来搜索的人解决了我的问题。在HTTP请求选项中,需要将响应类型设置为ArrayBuffer。我也转而使用Filesaver.js,尽管我不确定是否真的需要它。

我们担心,Web浏览器不理解XLS(Excel 2003)和XLSX(Excel 2007及更新版本)格式。只有MicrosoftExcel理解这一点。这意味着,您不能在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担任开发人员传道者

我也尝试过使用附件。无差异.Aspose.Cells可以将Excel文件保存在字节数组或内存流中。您可以找到可以将字节数组或内存流发送到web浏览器的代码。您还可以询问堆栈溢出问题,当任何文件(Excel、Word、Pdf等)位于字节数组或内存流中时,如何将其发送到浏览器。谢谢