如何实现163邮箱下载Excel弹出新页面的效果

stanley508 2008-07-28 04:32:38
我现在想在a页面里单击"导出Excel"按钮,把服务器端要下载的Excel的文件名和路径传到B(空白页)
想在B里再弹出Excel的打开保存取消的消息框.就像163下载附件时的效果一样.
我现在B的Page_load里写如下代码:

protected void Page_Load(object sender, EventArgs e)
{
string filepath = (string)Session["filepath"];
Response.HeaderEncoding = System.Text.Encoding.GetEncoding("GB2312");
Response.AddHeader("Content-Type", "application/vnd.ms-word");
Response.AddHeader("Content-Disposition", "attachment;filename=" + Server.UrlEncode(filepath));

//Response.ContentType = "application/vnd.ms-excel";// 指定返回的是一个不能被客户端读取的流,必须被下载
Response.WriteFile(filepath); // 把文件流发送到客户端
Response.End();
}

结果单击A的导出Excel按钮后,B闪了一下就没了,不知道是什么原因.
请大家帮忙.
...全文
185 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lmz5428888 2012-08-14
  • 打赏
  • 举报
回复
为什么那么神奇,按住Ctrl键就一切正常了!求解释啊。我正遇到这个问题,不知道楼主解决了没有。救救小弟啊……
stanley508 2008-07-28
  • 打赏
  • 举报
回复
changke18:
你说得没错,按住Ctrl就好用了
但是不能让客户也一直按着Ctrl,你有什么好的解决办法吗?
stanley508 2008-07-28
  • 打赏
  • 举报
回复
楼上,如果如你所说,有什么办法呢,请指点迷津
ljm66 2008-07-28
  • 打赏
  • 举报
回复
page_load结束后就会是页面的显示,而把打开保存取消的消息框给 屏蔽了
西安风影 2008-07-28
  • 打赏
  • 举报
回复
可能是浏览器设置问题
我经常碰到
你尝试按住Ctrl+"导出Excel按钮"
livesw 2008-07-28
  • 打赏
  • 举报
回复
页面上增加这个就应该可以了
public override void VerifyRenderingInServerForm(Control control)//重载控件 于server,for 导出excel
{

}

我的导出代码
/// <summary>
/// 从Gridview导入到Excel
/// </summary>
public static void ToExcel(GridView Gv, Page page, string filename)
{
if (Gv.Rows.Count > 0)
{
page.Response.ClearContent();
page.Response.Charset = "UTF-8";
page.Response.ContentEncoding = System.Text.Encoding.UTF8;
page.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(filename, Encoding.UTF8).ToString());
page.Response.ContentType = "application/ms-excel";
StringWriter tw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(tw);
Gv.RenderControl(hw);
page.Response.Write(tw.ToString());
page.Response.End();
}
}
stanley508 2008-07-28
  • 打赏
  • 举报
回复
再做个补充:
如果在B里加个按钮,把Page_load里的代码写到这个按钮里
这个时候B可以显示,当击按钮,就要以弹出Excel的打开保存取消的消息框了.
但是直接写在page_load里就不行,不知道为什么???

111,125

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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