在Visual Studio中使用C#创buildxls文件时遇到困难

我试图修复其他人的代码,从网站上的数据创build一个Excel文件。 我们有数据了,用户可以通过在网站上使用不同的checkbox等隐藏或显示其中的某些部分。 一旦用户有他们想要显示的内容,我们可以select将其导出到Excel文件中。 一切正常,直到文件被打开。 打开文件时,错误:

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

现在,如果点击是,文件仍然打开,数据格式化就好了。 但是,我们希望这个错误消失,因为它不是非常用户友好或干净。 以下是用于导出的代码:

// perform export System.Web.HttpResponse objResponse = System.Web.HttpContext.Current.Response; objResponse.Clear(); objResponse.Charset = ""; objResponse.Buffer = true; objResponse.AddHeader("Content-Disposition", String.Format("attachment;filename={0}", "filename.xls")); objResponse.ContentType = "application/vnd.ms-excel"; System.IO.StringWriter objStringWriter = new System.IO.StringWriter(); System.Web.UI.HtmlTextWriter objHTMLWriter = new System.Web.UI.HtmlTextWriter(objStringWriter); m_objDataTable.RenderControl(objHTMLWriter); objResponse.Write(objStringWriter); objResponse.End(); 

任何帮助将非常感激。

我相信,第一步是在纯文本编辑器中查看生成的文件,找出正在输出的内容。
XLS扩展不支持压缩,这将是XLSX。
XLS扩展不支持HTML(非常慢),制表符分隔的数据(更快)和本机Excel电子表格。
快速查看应该告诉你什么是输出。
个人偏好是制表符分隔文本或逗号分隔的CSV取决于数据中的内容。
由于您使用Excel对象,我怀疑输出将在本机Excel中,但HTMLTextWriter告诉我,它正在输出为一个表。 看看它,文本会告诉你,如果你有一个有效的HTML或Excel文件或两者兼而有之。
编辑下一个技巧是将扩展名更改为HTML并在浏览器中打开它。 它应该在数据中显示一个可见的小故障,如果它有一个错误。 如果数据包含HTML,则HTML格式不会很好。
制表符分隔的输出将正确处理HTML,但所有制表符必须更改为空格,并且CSV对复杂string不能很好地执行。
在十多年以前,我还没有对XLS进行本地输出,那是因为我想为单元格添加计算。 (这是在VB6)