asp.net导出excel数据表时页面关闭!

H_Gragon 2013-04-24 10:21:23
下面的方法倒是能导出数据,但页面就关闭了!我不想页面关闭怎么改?
public void ExcelOut(GridView gv)
{//导出Excel表的方法
if (gv.Rows.Count > 0)
{//有数据行
Response.Clear();
Response.ClearContent();
Response.AddHeader("Content-Disposition", "attachment;filename=" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls");//以系统时间设置为文件名
Response.ContentEncoding = System.Text.Encoding.UTF8;//UTF8编码
Response.ContentType = "application/ms-excel";//文件类型
StringWriter sw = new StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
gv.RenderControl(htw);
Response.Write(sw.ToString());
Response.Flush();
Response.End();//结束
}
else
{
Response.Write("<script>alert('没有数据!');location='AuditDetail.aspx?parentId="+parentId+"&id="+id+"'</script>");
}
}

public override void VerifyRenderingInServerForm(Control control)
{ }
//导出excel按钮
protected void BtnExport_Click(object sender, EventArgs e)
{
DataTable dt = selfManager.Sel_AuditDetailed(id);
GridView GV = new GridView();
GV.DataSource = dt.DefaultView;
GV.AllowPaging = false;
GV.DataBind();
ExcelOut(GV);//调用方法

}
...全文
161 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
Conmajia 2013-04-25
  • 打赏
  • 举报
回复
引用 11 楼 cnceohjm 的回复:
引用 9 楼 id270 的回复:为楼主的智商拙计 我的智商,总比你TM打错字好吧!
打错字。。笑了。。果然智商拙计。。
快乐的小二兔 2013-04-24
  • 打赏
  • 举报
回复
为楼主的智商拙计
yyl8781697 2013-04-24
  • 打赏
  • 举报
回复
你的那个导出方法已经把输出给清空掉了 Response.Clear(); 就算不关闭 也没页面了 建议还是新页面打开,安全又省心,而且还可以复用
H_Gragon 2013-04-24
  • 打赏
  • 举报
回复
引用 6 楼 yyl8781697 的回复:
在一个单独页面上或者ashx上面处理你的excel导出就可以,这样你的页面也不会太大
还有没有别的办法呢?
yyl8781697 2013-04-24
  • 打赏
  • 举报
回复
在一个单独页面上或者ashx上面处理你的excel导出就可以,这样你的页面也不会太大
H_Gragon 2013-04-24
  • 打赏
  • 举报
回复
引用 2 楼 szcszcss 的回复:
你可以在导出按钮上不这么写。 直接重定向。到另外一个页面去导出。当然如果你这导出的有搜索条件的话记得保存查询条件。 在另外个页面要解析查询条件保证2边的数据是一样的。再进行导出操作。
重定向也行,但感觉方法不太好!
  • 打赏
  • 举报
回复
在每个Response前面加上 HttpContext.Current.
szcszcss 2013-04-24
  • 打赏
  • 举报
回复
引用 2 楼 szcszcss 的回复:
你可以在导出按钮上不这么写。 直接重定向。到另外一个页面去导出。当然如果你这导出的有搜索条件的话记得保存查询条件。 在另外个页面要解析查询条件保证2边的数据是一样的。再进行导出操作。
protected void btnOutExcel_Click(object sender, EventArgs e) { Session["sFileName"] = "LogList"; Response.Redirect("../OutExcel/LogListOutExcel.aspx?sCondition=" + Session["sCondition"] + "&sFileName=" + Session["sFileName"]); }
szcszcss 2013-04-24
  • 打赏
  • 举报
回复
你可以在导出按钮上不这么写。 直接重定向。到另外一个页面去导出。当然如果你这导出的有搜索条件的话记得保存查询条件。 在另外个页面要解析查询条件保证2边的数据是一样的。再进行导出操作。
  • 打赏
  • 举报
回复
H_Gragon 2013-04-24
  • 打赏
  • 举报
回复
引用 9 楼 id270 的回复:
为楼主的智商拙计
我的智商,总比你TM打错字好吧!
H_Gragon 2013-04-24
  • 打赏
  • 举报
回复
引用 9 楼 id270 的回复:
为楼主的智商拙计
你什么意思啊,我怎么了?你牛B,你给想给好方法!

62,075

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧