我目前正在編寫一個ASP.NET MVC 5控制器操作來將一些數據導出到Excel文件(使用我在這裏找到的一些代碼)。它工作...大多數。它輸出一個Excel文件,我可以打開它,但不能顯示以下錯誤消息之前:ASP.NET MVC Excel導出文件格式錯誤
「文件格式和'Export.xls'的擴展名不匹配。文件可能已損壞或不安全。除非你信任它的來源,不要打開它,你還想打開它嗎?「
我繼續選擇「是」,然後打開。我可以將它重新保存在我的機器上並打開該文件,但我沒有收到錯誤信息。它在其他方面工作正常,唯一的另一個奇怪之處在於,文件的網格線格式不同於Excel文件的格式,幾乎更像HTML表格而不是Excel表格。然而,奇怪的錯誤信息不是在這裏可以接受的,所以我必須解決它。
這裏是我的代碼:
public void ExportExcel()
{
// DataObject is a class that fetches the data for this method
DataObject dataObj = new DataObject();
var grid = new GridView();
// dataObj.GetDataList returns a List<T> of data model class objects
grid.DataSource = dataObj.GetDataList();
grid.DataBind();
Response.ClearContent();
Response.Buffer = true;
Response.AddHeader("content-disposition", "attachment; filename=Export.xls");
Response.ContentType = "application/vnd.ms-excel";
Response.Charset = "";
StringWriter sw = new StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
grid.RenderControl(htw);
byte[] byteArray = Encoding.ASCII.GetBytes(sw.ToString());
MemoryStream s = new MemoryStream(byteArray);
StreamReader sr = new StreamReader(s, Encoding.ASCII);
Response.Write(sr.ReadToEnd());
Response.End();
}
我已經嘗試設置Response.ContentType爲其他值( 「應用程序/ EXCEL」, 「應用程序/ MS-Excel的」),但沒有成功。一般來說,我對ASP.NET和C#有點新鮮,所以可能會有一些我在這裏丟失或做錯的地方;我更習慣於PHP和Zend。任何見解或幫助你可以給予不勝感激;謝謝!
邊注:您的示例代碼看起來並不望其項背以如何ASP.MVC行動應該看起來像......內容或[文件](http://msdn.microsoft.com/en-us/library/dd470835%28v=vs.118%29.aspx)將使更有意義。 –
File方法看起來很整潔,謝謝指出。 (就像我說我是C#的新手:)) – TrentD