簡體   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