2009-12-22 56 views
3

我有一個生成Microsoft Excel 2003 XML格式的電子表格的ASP.Net MVC站點。電子表格看起來不錯,控制器和視圖都可以工作,但該文件不會在Excel中打開。它在瀏覽器中打開,因爲它是一個XML文檔。在Asp.net MVC Web站點生成Excel XML文檔

我試着將ContentType更改爲Excel XLS格式(application/excel)並使Excel打開該文件,但它提供了一條警告消息,指出該文件是XML文檔,而不是XLS文檔。

如何在Excel中從一個網站打開一個Excel XML文檔?

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage" %><% 
this.Context.Response.Clear(); 
this.Context.Response.AddHeader("content-disposition", "attachment;filename=State_Report_" + this.ViewData["State"] + ".xml"); 
this.Context.Response.Charset = ""; 
this.Context.Response.Cache.SetCacheability(HttpCacheability.NoCache); 
this.Context.Response.ContentType = "application/excel"; 
%><?xml version="1.0"?> 
<?mso-application progid="Excel.Sheet"?> 
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" 
    xmlns:o="urn:schemas-microsoft-com:office:office" 
    xmlns:x="urn:schemas-microsoft-com:office:excel" 
    xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" 
    xmlns:html="http://www.w3.org/TR/REC-html40"> 

回答

1

您的問題可能在於使用文件擴展名.xml,它將添加到您的標題中。 我的代碼,做同樣的事情根本沒有文件擴展名。

您可能會嘗試刪除該.xml擴展名,或將其更改爲.xls或.csv。

+0

首先,謝謝DOK。我試過了,文件現在在MS Excel中打開,但它會給出一個錯誤消息,指出文件格式與擴展名不匹配,因爲我在擴展名爲.XLS的文件中使用了XML格式。我認爲我的用戶可以忍受這一點,但我寧願讓它在沒有警告信息的情況下工作。 – 2009-12-22 20:29:14

+0

.xlsx怎麼樣?這是Excel 2007中引入的新擴展。這有另一個建議,可能會或可能不適合:http://www.itexperience.net/2008/03/17/excel-2007-error-different-format-than-指定的文件擴展名/ – DOK 2009-12-22 20:53:53

+0

這不是很好,但客戶接受它... – 2009-12-24 14:57:21

3

嘗試

Response.ContentType = "application/vnd.ms-excel" 

而且保持.XML擴展。

+1

請參閱:http://support.microsoft.com/kb/288130 – chrisb 2010-04-24 01:06:44

+1

@chrisb:「我們不推薦自動化包括Excel在內的Office應用程序在服務器上。「 – 2011-11-15 17:38:26