2009-11-20 50 views
1

每當我打開我我的ASP.NET頁面上生成與Excel 2007中xls文件,我得到以下錯誤:如何在ASP.NET中生成Excel 2007文件而不會收到警告消息?

The file you are trying to open, 'filename.xls', is in a different format than specified by the file extension. Verify that the file is not corrupted and is from a trusted source before opening the file. Do you want to open the file now?

如果我點擊「是」,一切都看起來不錯,但它很煩人我們的客戶每次都必須點擊。如果他們使用2003年,沒有問題,但在2007年,它給出了這個錯誤。這裏是我使用的代碼:

string style = @"<style> .text { mso-number-format: \@ } </style> "; 

Response.Clear(); 
Response.AddHeader("content-disposition", string.Format("attachment;filename=OperationsReport_Rejects_{0}.xls", DateTime.Today.ToString("yyyyMMdd"))); 
Response.Charset = ""; 
Response.ContentType = "application/vnd.xls"; 

StringWriter stringWrite = new StringWriter(); 
HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite); 

reportOperationsRejectsGridView.RenderControl(htmlWrite); 
Response.Write(style); 
Response.Write(stringWrite.ToString()); 
Response.End(); 

有誰知道是什麼原因造成它在2003和2007的行爲不同?

回答

4

Office 2007使用與以前的二進制文件格式不同的基於XML的文件格式。

Excel 2007保存的內容不是.xls文件,而是.xlsx文件。

你正在創建的實際上既不是。這是一個excel文件的HTML導出。有些版本將無縫導入HTML文件作爲Excel文件,有些版本會在導入之前警告您它實際上不是Excel文檔。

如果您創建一個實際的.xls文件,Excel 2007將以兼容模式打開它而不抱怨。

0

Excel 2003和2007使用不同的格式,除非用戶特意執行「另存爲」並選擇向後兼容的格式。

快速查看十六進制查看器或十六進制編輯器會顯示文件格式的巨大差異。

+0

2007版本將具有的.xlsx擴展 – 2009-11-20 19:54:07

+0

@DJ:不一定。你可以給它任何你想要的擴展;嘿,做一個另存爲並保存爲一個Excel 2007文件,但給它一個.JPG擴展名,並保存爲JPEG格式。格式方面仍然存在基本差異;我始終以任一種格式獲取文件。正如我所說,查看十六進制查看器或編輯器中的文件。 – 2009-11-20 20:23:38

0

可以保存爲真正的xls或xlsx工作簿 - 避免出現此錯誤消息。

您可以在我們的Excel報告示例頁面here上看到大量實時樣本,並下載免費試用版here

聲明:我自己的SpreadsheetGear LLC