ASP.NET的web页面gridview导出数据到EXCEL中的问题

j466237266 2012-06-15 09:28:40
我设置的GRIDVIEW一页显示10条数据,前面能成功的导出数据,到最后一页就失败了。我实验了几次,发现是因为最后一页的数据没满10条, 满了就能导出,各位哥哥姐姐帮忙看看,代码如下:
Response.Clear();
Response.BufferOutput = false;
//设定输出的字符集
Response.Charset = "UTF-8";
//假定导出的文件名为FileName.xls
Response.AppendHeader("Content-Disposition", "attachment;filename=FileName.xls");
Response.ContentEncoding = System.Text.Encoding.GetEncoding("UTF-8");
//设置导出文件的格式
Response.ContentType = "application/ms-excel";
//关闭ViewState
EnableViewState = false;
System.Globalization.CultureInfo cultureInfo = new System.Globalization.CultureInfo("ZH-CN", true);
System.IO.StringWriter stringWriter = new System.IO.StringWriter(cultureInfo);
System.Web.UI.HtmlTextWriter textWriter = new System.Web.UI.HtmlTextWriter(stringWriter);
GridView1.RenderControl(textWriter);
//把HTML写回浏览器
Response.Write(stringWriter.ToString());
Response.End();

网上的大概也都这样,跪求速解,在线等 昂
...全文
541 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
j466237266 2012-06-15
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 的回复:]
给你顶下我也想知道原因!
[/Quote]
。。。。。。
没人来了
你也有这个原因么
shuishouzhiqing 2012-06-15
  • 打赏
  • 举报
回复
给你顶下我也想知道原因!
j466237266 2012-06-15
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 的回复:]
引用 17 楼 licai1210 的回复:
最后一页的数据和前面的都一样吗?


嗯呢
但是就是最后一页那个导出框 闪一下就没了不能导出
有时候点个几十次 有一次有可能停住 这样就能导出了
但一般不出来
[/Quote]
导出框一闪而过
j466237266 2012-06-15
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 licai1210 的回复:]
最后一页的数据和前面的都一样吗?
[/Quote]

嗯呢
但是就是最后一页那个导出框 闪一下就没了不能导出
有时候点个几十次 有一次有可能停住 这样就能导出了
但一般不出来
licai1210 2012-06-15
  • 打赏
  • 举报
回复
最后一页的数据和前面的都一样吗?
j466237266 2012-06-15
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 的回复:]
引用 13 楼 的回复:
你点击最后一页,然后断点那个地方,看看输入有没有数据

刚才多了执行了BIND()
这次去了BIND()
<div>
<table cellspacing="0" cellpadding="4" rules="all" bordercolor="#999999" id="GridView1" style="color:#333333;border-color:……
[/Quote]

我刚测了测 值都一样啊
j466237266 2012-06-15
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 的回复:]
你点击最后一页,然后断点那个地方,看看输入有没有数据
[/Quote]
刚才多了执行了BIND()
这次去了BIND()
<div>
<table cellspacing="0" cellpadding="4" rules="all" bordercolor="#999999" id="GridView1" style="color:#333333;border-color:Gray;border-width:1px;border-style:Solid;font-family:Verdana;font-size:11px;width:100%;border-collapse:collapse;">
<tr align="center" style="color:#666666;background-color:#DDDDDD;font-weight:normal;white-space:nowrap;">
j466237266 2012-06-15
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 的回复:]
你点击最后一页,然后断点那个地方,看看输入有没有数据
[/Quote]

有值啊:下面

{<div>\r\n\t<table cellspacing="0" cellpadding="4" rules="all" bordercolor="#999999" id="GridView1" style="color:#333333;border-color:Gray;border-width:1px;border-style:Solid;font-family:Verdana;font-size:11px;width:100%;border-collapse:collapse;">\r\n\t\t<tr align="center" style="color:#666666;background-color:#DDDDDD;font-weight:normal;white-space:nowrap;">\r\n\t\t\t<th scope="col"> </th><th scope="col">产品名称</th><th scope="col">电路板型号</th><th scope="col">版号</th><th scope="col">故障工位</th><th scope="col">故障类型</th><th scope="col">故障现象</th><th scope="col">故障原因</th><th scope="col">备注</th><th scope="col">维修人</th><th scope="col">完成时间</th><th scope="col">交接日期</th><th scope="col">交接目标</th>\r\n\t\t</tr><tr onmouseover="this.style.backgroundColor='#0099FF'" onmouseout="this.style.backgroundColor='#FFFFFF'" style="color:#333333;background-color:#F7F6F3;">\r\n\t\t\t<td><a href="javascript:__doPostBack('GridView1','Edit$0')" style="color:#333333;">编辑</a> <a onclick="return confirm('确定删除?');" href="javascript:__doPostBack('GridView1','Delete$0')" style="color:#333333;">删除</a></td><td> </td><td>dsaf</td><td>0</td><td> </td><td style="width:100px;"> </td><td style="width:100px;"> </td><td style="width:100px;"> </td><td> </td><td> </td><td>1900-1-1 0:00:00</td><td>1900-1-1 0:00:00</td><td> </td>\r\n\t\t</tr><tr onmouseover="this.style.backgroundColor='#0099FF'" onmouseout="this.style.backgroundColor='#FFFFFF'" style="color:#284775;background-color:White;border-color:#666699;">\r\n\t\t\t<td><a href="javascript:__doPostBack('GridView1','Edit$1')" style="color:#284775;">编辑</a> <a onclick="return confirm('确定删除?');" href="javascript:__doPostBack('GridView1','Delete$1')" style="color:#284775;">删除</a></td><td> </td><td>dfsa</td><td>0</td><td> </td><td style="width:100px;"> </td><td style="width:100px;"> </td><td style="width:100px;"> </td><td> </td><td> </td><td>1900-1-1 0:00:00</td><td>2012-6-30 0:00:00</td><td> </td>\r\n\t\t</tr><tr onmouseover="this.style.backgroundColor='#0099FF'" onmouseout="this.style.backgroundColor='#FFFFFF'" style="color:#333333;background-color:#F7F6F3;">\r\n\t\t\t<td><a href="javascript:__doPostBack('GridView1','Edit$2')" style="color:#333333;">编辑</a> <a onclick="return confirm('确定删除?');" href="javascript:__doPostBack('GridView1','Delete$2')" style="color:#333333;">删除</a></td><td> </td><td>fdas</td><td>0</td><td> </td><td style="width:100px;"> </td><td style="width:100px;"> </td><td style="width:100px;"> </td><td> </td><td> </td><td>2012-6-24 0:00:00</td><td>2012-6-30 0:00:00</td><td> </td>\r\n\t\t</tr><tr onmouseover="this.style.backgroundColor='#0099FF'" onmouseout="this.style.backgroundColor='#FFFFFF'" style="color:#284775;background-color:White;border-color:#666699;">\r\n\t\t\t<td><a href="javascript:__doPostBack('GridView1','Edit$3')" style="color:#284775;">编辑</a> <a onclick="return confirm('确定删除?');" href="javascript:__doPostBack('GridView1','Delete$3')" style="color:#284775;">删除</a></td><td> </td><td>dsfa</td><td>0</td><td> </td><td style="width:100px;"> </td><td style="width:100px;"> </td><td style="width:100px;"> </td><td> </td><td> </td><td>1900-1-1 0:00:00</td><td>1900-1-1 0:00:00</td><td>dasf</td>\r\n\t\t</tr><tr onmouseover="this.style.backgroundColor='#0099FF'" onmouseout="this.style.backgroundColor='#FFFFFF'" style="color:#333333;background-color:#F7F6F3;">\r\n\t\t\t<td><a href="javascript:__doPostBack('GridView1','Edit$4')" style="color:#333333;">编辑</a> <a onclick="return confirm('确定删除?');" href="javascript:__doPostBack('GridView1','Delete$4')" style="color:#333333;">删除</a></td><td> </td><td>fadsfasd</td><td>0</td><td> </td><td style="width:100px;"> </td><td style="width:100px;"> </td><td style="width:100px;"> </td><td> </td><td> </td><td>1900-1-1 0:00:00</td><td>1900-1-1 0:00:00</td><td> </td>\r\n\t\t</tr><tr align="center" style="color:Black;background-color:#DDDDDD;height:15px;">\r\n\t\t\t<td colspan="13">\r\n <span id="GridView1_lblPage">第4页/共4页</span>\r\n <a id="GridView1_lbnFirst" href="javascript:__doPostBack('GridView1$ctl08$lbnFirst','')">首页</a>\r\n <a id="GridView1_lbnPrev" href="javascript:__doPostBack('GridView1$ctl08$lbnPrev','')">上一页</a>\r\n <a id="GridView1_lbnNext" class="aspNetDisabled">下一页</a>\r\n <a id="GridView1_lbnLast" class="aspNetDisabled">尾页</a>\r\n 转到第 \r\n <input name="GridView1$ctl08$txtNewPageIndex" type="text" value="4" id="GridView1_txtNewPageIndex" style="width:20px;" />\r\n 页 \r\n <a id="GridView1_btnGo" href="javascript:__doPostBack('GridView1$ctl08$btnGo','')">GO</a>\r\n </td>\r\n\t\t</tr>\r\n\t</table>\r\n</div>}
licai1210 2012-06-15
  • 打赏
  • 举报
回复
你点击最后一页,然后断点那个地方,看看输入有没有数据
j466237266 2012-06-15
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]
到最后一页的时候Response.Write(stringWrite.ToString());有数据吗?断点下stringWrite.ToString()
[/Quote]
不END的话 是有数据 就是把整个页面连按钮什么的都导出来了
jonson555 2012-06-15
  • 打赏
  • 举报
回复
来看看大神的解决办法。
j466237266 2012-06-15
  • 打赏
  • 举报
回复
哥哥姐姐 出来啊
j466237266 2012-06-15
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]
到最后一页的时候Response.Write(stringWrite.ToString());有数据吗?断点下stringWrite.ToString()
[/Quote]
怎么判断是不是最后一页啊,小弟是个新手
j466237266 2012-06-15
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]
吧你的这个方法(RenderControl)贴出来看看
[/Quote]

就这个啊,没有定义(RenderControl)方法
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
//GridView1.PageIndex = e.NewPageIndex;
//Bind();
// 得到该控件
GridView theGrid = sender as GridView;
int newPageIndex = 0;
if (e.NewPageIndex == -3)
{
//点击了Go按钮
TextBox txtNewPageIndex = null;

//GridView较DataGrid提供了更多的API,获取分页块可以使用BottomPagerRow 或者TopPagerRow,当然还增加了HeaderRow和FooterRow
GridViewRow pagerRow = theGrid.BottomPagerRow;

if (pagerRow != null)
{
//得到text控件
txtNewPageIndex = pagerRow.FindControl("txtNewPageIndex") as TextBox;
}
if (txtNewPageIndex != null)
{
//得到索引
newPageIndex = int.Parse(txtNewPageIndex.Text) - 1;
}
}
else
{
//点击了其他的按钮
newPageIndex = e.NewPageIndex;
}
//防止新索引溢出
newPageIndex = newPageIndex < 0 ? 0 : newPageIndex;
newPageIndex = newPageIndex >= theGrid.PageCount ? theGrid.PageCount - 1 : newPageIndex;

//得到新的值
theGrid.PageIndex = newPageIndex;

//重新绑定
Bind1();

}
格桑花 2012-06-15
  • 打赏
  • 举报
回复
吧你的这个方法(RenderControl)贴出来看看
licai1210 2012-06-15
  • 打赏
  • 举报
回复
到最后一页的时候Response.Write(stringWrite.ToString());有数据吗?断点下stringWrite.ToString()
j466237266 2012-06-15
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
Response.Clear();
Response.AddHeader("content-disposition", "attachment;filename=AJ_JC.xls");
Response.Charset = "big5";
Response.ContentType = "application/vnd.xls";
System.IO.StringWrite……
[/Quote]
大哥哥 我要的是分页导出,你这都导出来了

在帮忙看看 谢啦
j466237266 2012-06-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
你的GridView1的RenderControl方法里面是不是设置了每页显示的他条数,导致每页执行导出,调试下这个方法
[/Quote]

我的意思就是一页一页的导出昂,点击按钮导出当前显示的页,就是最后一页不满10条的话就失败了
j466237266 2012-06-15
  • 打赏
  • 举报
回复
我的意思就是一页一页的导出,点一下按钮导出当前显示的,前面都能,就最后一页不满10条的话就不能了。。
落曦 2012-06-15
  • 打赏
  • 举报
回复
Response.Clear();
Response.AddHeader("content-disposition", "attachment;filename=AJ_JC.xls");
Response.Charset = "big5";
Response.ContentType = "application/vnd.xls";
System.IO.StringWriter stringWrite = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);

gvData.AllowPaging = false;
gvData.AllowSorting = false;
BindGridView();
gvData.RenderControl(htmlWrite);

Response.Write(stringWrite.ToString());
Response.End();
加载更多回复(2)

62,267

社区成员

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

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

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

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