如何在ASP.NET中生成Excel 2007文件而不会收到警告消息?

每当我打开一个xls文件,我在我的ASP.NET页面上使用Excel 2007生成,我得到以下错误:

您尝试打开的文件“filename.xls”采用与文件扩展名指定的格式不同的格式。 打开文件之前,validation该文件是否已损坏并且来自受信任的来源。 你想现在打开文件吗?

如果点击“是”,一切看起来都不错,但是我们的客户每次都要点击它,这很烦人。 如果他们使用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年performance不同?

Office 2007使用与以前的二进制文件格式不同的基于XML的文件格式。

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

你所创造的实际上既不是。 这是一个excel文件的HTML导出。 有些版本将无缝导入HTML文件作为Excel文件,有些版本会在导入之前提醒您,它实际上不是Excel文档。

如果您创build一个实际的.xls文件,Excel 2007将以兼容模式打开它,而不会抱怨。

Excel 2003和2007使用不同的格式,除非用户专门执行“另存为”并select向后兼容的格式。

在hex查看器或hex编辑器中快速查看将显示文件格式的巨大差异。

SpreadsheetGear for .NET可以保存为真正的xls或xlsx工作簿 – 避免出现此错误消息。

您可以在我们的Excel报告示例页面上查看大量实时样本,并在此处下载免费试用版。

免责声明:我自己的SpreadsheetGear LLC