C# Internet Explorer中无法将Asp.Net Web表单导出到excel

C# Internet Explorer中无法将Asp.Net Web表单导出到excel,c#,asp.net,excel,internet-explorer,webforms,C#,Asp.net,Excel,Internet Explorer,Webforms,问题是:我有一个报告,它是用一些转发器生成的,生成的HTML是可以的。生成报告后,我调用一个函数导出到excel: protected void ExportToExcel(Control control) { Response.Clear(); Response.Buffer = true; Response.AddHeader("content-disposition", "attachment;filename=Relatorio.xls"); Respon

问题是:我有一个报告,它是用一些转发器生成的,生成的HTML是可以的。生成报告后,我调用一个函数导出到excel:

protected void ExportToExcel(Control control)
{
    Response.Clear();
    Response.Buffer = true;
    Response.AddHeader("content-disposition", "attachment;filename=Relatorio.xls");
    Response.Charset = "";
    Response.ContentType = "application/vnd.ms-excel";
    StringWriter sw = new StringWriter();
    HtmlTextWriter hw = new HtmlTextWriter(sw);
    control.RenderControl(hw);
    Response.Output.Write(sw.ToString());
    Response.Flush();
    Response.End();
}
问题是:例如,当使用Firefox访问报告时,此功能可以正常工作,但在Internet Explorer中则不能。在Response.Output.Write(sw.ToString())行上放置断点时;调试sw.ToString()时,我发现它是空的

我使用这个非常相同的功能导出一些其他报告,它在Internet Explorer中工作,在这个特定的报告中不工作。我一直在尝试查找HTML错误,例如缺少结束标记,但到目前为止我没有找到任何错误

你们经历过这种情况吗?关于在我的代码中查找什么,您有什么建议吗


提前感谢您的帮助。

通常您会写信给stringbuilder,然后致电stringbuilder.tostring()


解决了。我检查了所有的html,删除了更新面板,甚至excel导出也无法工作。对我来说,解决这个问题的方法是向函数传递占位符,而不是转发器

我仍然不明白传递占位符有效而传递中继器无效的确切原因,但问题已经解决了


谢谢你的回复

您发布的代码不会在不同浏览器之间执行不同的操作,问题可能在于调用此方法之前运行的代码的其他位置。
StringBuilder sb = new StringBuilder();
StringWriter sw = new StringWriter(sb);
HtmlTextWriter hw = new HtmlTextWriter(sw);
control.RenderControl(hw);
Response.Output.Write(sb.ToString());