在Visual Studio中使用C#创建xls文件时出现问题

本文关键字:文件 xls 问题 创建 Studio Visual | 更新日期: 2023-09-27 18:21:45

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

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

现在,如果单击"是",文件仍然会打开,数据的格式也很好。然而,我们希望这个错误消失,因为它对用户不太友好或看起来不干净。以下是用于导出的代码:

        // 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();

任何帮助都将不胜感激。

在Visual Studio中使用C#创建xls文件时出现问题

我认为第一步是在纯文本编辑器中查看结果文件,以了解输出的内容
XLS扩展不支持压缩,这将是XLSX
XLS扩展确实支持HTML(速度非常慢)、制表符分隔的数据(速度更快)和本地Excel电子表格
快速查看应该会告诉您正在输出的内容
个人偏好是仅以制表符分隔的文本或逗号分隔的csv,具体取决于数据中的内容
由于您使用的是Excel对象,我怀疑输出将在本机Excel中,但HTMLTextWriter告诉我它将作为表输出。将其视为文本可以判断您是否拥有有效的HTML或Excel文件,或者两者兼而有之。
编辑下一个技巧是将扩展名更改为HTML并在浏览器中打开它。如果有错误,它应该在数据中显示可见的故障。如果数据中包含HTML,那么HTML格式就不能很好地工作
制表符分隔的输出将正确处理HTML,但所有制表符都必须更改为空格,并且CSV不能很好地处理复杂的字符串
我已经10多年没有向XLS进行本地导出了,那是因为我想在单元格中添加计算。(在VB6中)