首页 > 解决方案 > 在 ASP.NET 中下载 Excel 后执行代码

问题描述

我有一段代码在导入后下载无效记录的 excel。

我想在这种部分成功导入后刷新一个网格。但是,excel自动下载后的代码没有执行。

Response.Clear();
                                    Response.ClearHeaders();
                                    Response.ClearContent();
                                    Response.AddHeader("content-disposition", "attachment; filename=" + PathToExcelFile);
                                    Response.AddHeader("Content-Type", "application/Excel");
                                    Response.AddHeader("Content-Length", file.Length.ToString());
                                    Response.WriteFile(file.FullName);
                                    HttpContext.Current.Response.Flush(); // Sends all currently buffered output to the client.
                                    HttpContext.Current.Response.SuppressContent = true;  // Gets or sets a value indicating whether to send HTTP content to the client.
                                    HttpContext.Current.ApplicationInstance.CompleteRequest();

我发现 Response.Flush() 会抛出一个 Thread Abort 异常。因此将其更改为 CompleteRequest()。但是,仍然没有运气。

不知道我做错了什么?

标签: asp.netexcelwebforms

解决方案


将文件名/路径等保存到 ViewState 变量中,然后调用 window.open 到一个单独的 download.aspx 页面,该页面处理文件的下载。在下载页面中,引用您之前设置的 ViewState 变量。在原始(不是下载)页面中,您可以在 window.open 调用之后执行您喜欢的任何代码。


推荐阅读