Gridview导出EXCEL问题

Oldman 2007-05-18 10:44:55
在Win2003上,IE是6.0 SP1,安装了Office2003,
从网页面上将GridView导出成EXCEL时,弹出下载页面都很正常,但只要你一点打开 / 保存 /取消 打开导出EXCEL的那个母页面就会自动关闭了,不知是怎么回事,在导出的脚本中没有一句是说要关闭IE窗口的。
...全文
776 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuwei2150 2008-07-15
  • 打赏
  • 举报
回复
xp下虽然没有关闭窗口,但是你点击任何按钮都没有反应了
qyc2715 2008-06-13
  • 打赏
  • 举报
回复
是的,我页遇到这问题,在xp页面下就不会自动关闭窗口
孟子E章 2007-08-30
  • 打赏
  • 举报
回复
在2003系统上没有你说的问题啊。例子
http://dotnet.aspx.cc
spunder 2007-08-30
  • 打赏
  • 举报
回复
我跟楼主一样的问题,但是在xp系统上就不会关掉文件下载对话框。在2003系统上,无论点哪个按钮都会关掉原来的网页
spunder 2007-08-30
  • 打赏
  • 举报
回复
我的开发系统是winxp,vs2005,出现文件下载对话框,很正常。但是当发布到另一台机器操作系统是2003 server 时,也出现文件下载对话框,但是点击文件下载对话框的任何一个按钮,原来的网页就关掉,而在winxp系统下,没有问题。
Arieslns 2007-05-28
  • 打赏
  • 举报
回复
mark
hertcloud 2007-05-28
  • 打赏
  • 举报
回复
不要将 显示 数据的页面 和 导出成excel的部分 共同使用一个页面

显示数据页面 上 放个 导出Excel 的按钮
转向到OutExcel.aspx文件 导出.
hai173 2007-05-28
  • 打赏
  • 举报
回复
//如果没有下面方法会报错 类型“GridView”的控件“GridView1”必须放在具有 runat=server 的窗体标记内
public override void VerifyRenderingInServerForm(Control control)
{
}
还有由于是文件操作所以要引入名称空间IO和Text
KingDemo 2007-05-18
  • 打赏
  • 举报
回复
GridView数据导入Excel
页面增加一个按钮,单击事件添加如下方法:
protected void Button1_Click(object sender, EventArgs e)
{
Export("application/ms-excel", "xxxx.xls");
}

private void Export(string FileType, string FileName)
{
Response.Charset = "GB2312";
Response.ContentEncoding = System.Text.Encoding.UTF7;
Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(FileName, Encoding.UTF8).ToString());
Response.ContentType = FileType;
this.EnableViewState = false;
StringWriter tw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(tw);
GridView1.RenderControl(hw);
Response.Write(tw.ToString());
Response.End();
}
如果没有下面方法会报错类型“GridView”的控件“GridView1”必须放在具有 runat=server 的窗体标记内
public override void VerifyRenderingInServerForm(Control control)
{
}


Oldman 2007-05-18
  • 打赏
  • 举报
回复
const string HtmlHeader =
@"<html>
<head>
<meta http-equiv=""content-type"" content=""text/html; charset=UTF-8"">
<title></title></head>
<body>";

const string HtmlFooter =
@"</body>
</html>";

private static string RenderControl(Control ctrl)
{
ctrl.Page.Response.ContentEncoding = Encoding.UTF8;
ctrl.EnableViewState = false;

StringWriter sw = new StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
ctrl.RenderControl(htw);

return sw.ToString();
}

private static void ModifyHttpHeader(HttpResponse response, string contentType, string fileName)
{
response.Clear();
response.ClearHeaders();
response.Charset = "UTF-8";
response.Buffer = true;
response.ContentType = contentType;
response.ContentEncoding = System.Text.Encoding.GetEncoding("UTF-8");
response.AddHeader("Content-Disposition", "attachment;filename='test.xls'");
}

private static void ExportControl(Control ctrl, string contentType, string fileName)
{

ctrl.Page.EnableViewState = false;

HttpResponse response = HttpContext.Current.Response;

StringBuilder sb = new StringBuilder();
sb.Append(HtmlHeader).Append(RenderControl(ctrl)).Append(HtmlFooter);

ModifyHttpHeader(response, contentType, fileName);

response.Write(sb.ToString());
response.Flush();
response.End();
}

public static void ExportExcel(Control ctrl, string fileName)
{
ExportControl(ctrl, "application/vnd.ms-excel", fileName);
}
Nash_exe 2007-05-18
  • 打赏
  • 举报
回复
代码贴出来看看.
MaWenkun 2007-05-18
  • 打赏
  • 举报
回复
母页加上<form id="form1" runat="server" target="_blank">这样试试。
没试过。你看看行不行
blueskygenius 2007-05-18
  • 打赏
  • 举报
回复
public partial class GWExcel : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if(!Page.IsPostBack)
{
BindData();
}
}
private void BindData()
{
SqlConnection con = new SqlConnection("server=.;database=sample4;uid=sa;pwd=sa");
SqlDataAdapter sda = new SqlDataAdapter("select * from bb",con);
DataSet ds = new DataSet();
sda.Fill(ds);
GridView1.DataSource = ds;
GridView1.DataBind();
}

public override void VerifyRenderingInServerForm(Control control)
{
// Confirms that an HtmlForm control is rendered for
}
protected void paging(object sender, GridViewPageEventArgs e)
{
GridView1.PageIndex = e.NewPageIndex;
BindData();
}
protected void Button1_Click(object sender, EventArgs e)
{
Response.Clear();
Response.AddHeader("content-disposition", "attachment;filename=dfsgdfg.xls");
Response.Charset = "gb2312";
Response.ContentType = "application/vnd.xls";
System.IO.StringWriter stringWrite = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);

GridView1.AllowPaging = false;
BindData();
GridView1.RenderControl(htmlWrite);

Response.Write(stringWrite.ToString());
Response.End();
GridView1.AllowPaging = true;
BindData();
}
}
iloveaspx 2007-05-18
  • 打赏
  • 举报
回复

http://www.51aspx.com/S/Excel_GridView.aspx

http://www.51aspx.com/CV/GridViewDemo

62,072

社区成员

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

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

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

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