我想将一些动态数据从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版本可以吗?
答案 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)