从ASP.NET导出到Excel会生成使用Excel Viewer无法读取的文件

时间:2010-05-31 22:55:03

标签: asp.net html excel export-to-excel

我想将一些动态数据从ASP.NET网站输出到Excel。我发现不需要使用Excel XML或在服务器计算机上安装Excel的最简单方法是output data as a table并指定 application / vnd.ms-excel 类型。

问题是当我这样做并尝试在Excel Viewer中打开文件时,收到以下错误消息:

  

Microsoft Excel Viewer无法打开   这种类型的文件。

然后什么都没打开。

即使是最简单的代码,例如:

protected void Page_Load(object sender, EventArgs e)
{
    Response.Clear();
    Response.Buffer = true;
    HttpContext.Current.Response.AddHeader("content-disposition", "attachment; filename=Example.xls");
    Response.ContentType = "application/vnd.ms-excel";
    StringWriter stringWriter = new System.IO.StringWriter();
    HtmlTextWriter htmlTextWriter = new System.Web.UI.HtmlTextWriter(stringWriter);
    dataGrid.RenderControl(htmlTextWriter);
    Response.Write("<html><body><table><tr><td>A</td><td>B</td></tr><tr><td>C</td><td>D</td></tr></table></body></html>");
    Response.End();
}

会产生同样的错误。

什么可能导致这种行为?是因为 Viewer 无法读取此类文件,但完整的Excel版本可以吗?

2 个答案:

答案 0 :(得分:2)

您永远不会想要在服务器上安装Excel的路线。 COM接口可以在没有UI的情况下工作,但它不是设计用的,如果存在某种错误,您最终可能会在服务器上出现大量挂起的EXCEL.EXE实例。它也不能与IIS 7.5的应用程序池标识一起使用,也不适用于Server Core。

理想的解决方案是使用可以构建二进制(或OOXML)Excel文件的第三方组件。 SyncFusion和Aspose是此类工具的两个主要供应商。您最终将获得适用于所有Excel版本的文件,以及其他软件,如OpenOffice,Google Docs,Outlook Web App等。

答案 1 :(得分:1)

Excel阅读器只能打开excel文件。您确实没有将其导出为ex​​cel文件,而是将其导出为csv或html。它不一样。

修改

您是否尝试过此Export to Excel?