0

我正在使用以下代码创建一个 HTML 表格,将其保存到 XLS 文件中,然后在 Excel 中打开它。

    public void ExportToSpreadsheet(DataTable table, string name)
    {
        HttpContext context = HttpContext.Current;
        context.Response.Clear();
        context.Response.Write("<table border=1>");

        context.Response.Write(Environment.NewLine);
        foreach (DataRow row in table.Rows)
        {
            context.Response.Write("<tr>");
            context.Response.Write("<td width=47>" + row[1].ToString().Replace(";", string.Empty) + "</td>");
            context.Response.Write("<td width=47>" + row[2].ToString().Replace(";", string.Empty) + "</td>");
            context.Response.Write("<td width=110>" + row[3].ToString().Replace(";", string.Empty) + "</td>");
            context.Response.Write("<td width=75>" + row[4].ToString().Replace(";", string.Empty) + "</td>");
            context.Response.Write("<td width=285>" + row[5].ToString().Replace(";", string.Empty) + "</td>");
            context.Response.Write("<td width=61>" + row[6].ToString().Replace(";", string.Empty) + "</td>");

            context.Response.Write("</tr>");
            context.Response.Write(Environment.NewLine);
        }
        context.Response.Write("</table>");
        context.Response.ContentType = "application/vnd.ms-excel";
        context.Response.AppendHeader("Content-Disposition", "attachment; filename=" + name + ".xls");
        context.Response.End(); 
    }

现在这段代码工作得很好,但是,它是从一个按钮调用的,我希望在报告运行后刷新该按钮所在的页面上的一些信息,但是 ExportToSpreadsheet 方法之后的任何代码都被完全忽略。

所以当我这样做时:

 ExportToSpreadsheet(dt, "MyReport");
 PopulateLastRun();

我可以在 PopulatetoLastRun() 上设置一个断点,但它永远不会到达那里。谁能告诉我为什么?有没有解决的办法?

谢谢

4

1 回答 1

0

当您context.Response.End()在当前响应上调用方法时,之后不会执行任何代码。

所以为了刷新文件使用下面的代码而不是调用end().

context.Response.Flush();
于 2012-10-18T19:32:56.867 回答