0

在我的应用程序中,我必须导出通过以下代码实现的 excel 文件:

            Response.ClearContent();
            Response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}", pFileName));
            Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";

            FileInfo myFile = new FileInfo(fullfilePath);
            Response.WriteFile(myFile.FullName);
            Response.Flush();
            HttpContext.Current.ApplicationInstance.CompleteRequest();

            Response.End();

从存在“导出到 Excel”按钮的主页上,单击该按钮后,我注册了一个 Javascript,如下所示:

            ClientScript.RegisterStartupScript(this.GetType(), Guid.NewGuid().ToString(), "<script language=JavaScript>window.location.href('GenerateExcel.aspx');</script>");

并且在页面的页面加载中,GenerateExcel.aspx我编写了用于导出上面发布的文件的代码。这段代码对我有用,当用户点击“Export To Excel”按钮时,windows file Open , save & close popup is apeear 并且用户可以保存或打开文件,但我的问题是在该文件打开弹出窗口之后我想要刷新主页。我曾尝试注册 javascript,但Response.End没有任何效果。请帮我。

4

1 回答 1

0

您已经更改了主窗口的位置,window.location.href然后 HTTP 响应具有 Excel MIME 类型。主窗口不再有可使用的 HTTP 响应并且无法刷新。

相反,您应该打开一个全新的窗口并使用它来发送 Excel 文件响应。然后,您仍然可以刷新主窗口。

你的脚本应该是这样的;

<script> 
  window.open('GenerateExcel.aspx', 'Export To Excel');
  window.location.href=window.location.href;
</script>

避免打开窗口的另一种方法是使用 JavaScript 发出 HTTP 请求,但这需要 jQuery 以获得可靠的跨浏览器解决方案。

于 2012-05-08T06:31:22.177 回答