【问题标题】:not valid format or extension when open the exported Excel sheet from ASP.NET从 ASP.NET 打开导出的 Excel 工作表时格式或扩展名无效
【发布时间】:2018-03-18 21:40:03
【问题描述】:

我正在尝试按照以下解决方案使用Response 将我的 ASP.NET 应用程序中的 HTML 导出到 excel 文件中:
Export HTML Table to Excel using ASP.NET.

这正是我点击导出按钮时导出HTML表格的功能:

protected void exportBtn_Click(object sender, EventArgs e)
        {

            string filename = "Results_" + DateTime.Now.ToString("ddMMyyyy")+".xlsx";
            Response.Clear();
            Response.ContentType = "application/x-msexcel";
            Response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}", filename));
            Response.ContentEncoding = Encoding.UTF8;
            StringWriter stringWriter = new StringWriter();
            HtmlTextWriter hw = new HtmlTextWriter(stringWriter);
            resultTable.RenderControl(hw);
            Response.Write(stringWriter.ToString());
            Response.End();

        }

导出完成后,当我尝试打开生成的 .xlsx 文件时,它会显示以下消息:

知道如何解决这个问题吗?

【问题讨论】:

  • 开始使用专门的库来创建 Excel 文件,例如 EPPlus。您现在所做的只是创建一个扩展名为 .xls 的 HTML 页面。
  • @VDWWD 但它以前可以工作,我不知道这是什么问题
  • 之前有没有用没关系。它不应该工作。

标签: c# asp.net


【解决方案1】:

简单的解决方案是将ContentType"application/x-msexcel"更改为"application/vnd.ms-excel",并使用.xls作为扩展名,而不是使用.xlsx

最终代码为:

protected void exportBtn_Click(object sender, EventArgs e)
        {

            string filename = "Results_" + DateTime.Now.ToString("ddMMyyyy")+".xls";
            Response.Clear();
            Response.ContentType = "application/vnd.ms-excel";
            Response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}", filename));
            Response.ContentEncoding = Encoding.UTF8;
            StringWriter stringWriter = new StringWriter();
            HtmlTextWriter hw = new HtmlTextWriter(stringWriter);
            resultTable.RenderControl(hw);
            Response.Write(stringWriter.ToString());
            Response.End();

        }

【讨论】:

  • 为什么要使用 XLS?这不是 Excel 文件。
  • @mason idk 有效,我搜索了这个扩展名,发现它是 excel 文件 fileinfo.com/extension/xls 不是吗?
  • 没有。简单地将 XLS 扩展名添加到文件上不会使其成为 Excel 文件。它使它成为一个伪装成 Excel 文件的 HTML 文件。这是一个肮脏的黑客。
  • @mason 我明白了,有更好的建议吗?
  • VDWWD 已经在问题的 cmets 中涵盖了正确的解决方案。
猜你喜欢
  • 2023-01-19
  • 1970-01-01
  • 1970-01-01
  • 2022-06-30
  • 1970-01-01
  • 2013-06-03
  • 1970-01-01
  • 1970-01-01
  • 2020-07-11
相关资源
最近更新 更多