我在这里使用GridView
来显示数据。为了将Gridview
数据导出为excel格式,我使用了一个按钮 - "Download into Excel"
。下载到Excel格式或导出到Excel是完美的。 GridView
共显示9列。
我的问题是我想在Excel表格中显示7列(根据我们的选择)。
显示的GridView
应该像往常一样保留,但Excel只会显示我们想要的那些列。
我已经使用过GridView1.Columns.RemoveAt(2);
但这会随机删除更多数量的列。
答案 0 :(得分:3)
.Net 4.0; VS2012
在我的类似案例中 - 大致是Kedar所描述的,包括按钮和看到100%的网格导出 - 我已经得出结论,试图让RemoveAt(索引)完成它的工作去除它是徒劳的我正在导出的gridview中的一列。我不知道它为什么没有,但我的gridview在RemoveAt后总是没有变化。
我在董事会上看到了一个类似的问题,其中接受了答案 - 对于想要导出到Excel的海报,再次希望在导出时隐藏指定的列 - 只是让他不想要的列不是.Visible 。受访者虽然做出了贡献,却忽略了这一点:目标是让有问题的列不出现在EXPORT上 - 不仅仅是从屏幕显示中消失,隐藏列很简单(设置为Visible = false)。
在我的情况下,我试图在gridview上丢失列,当它被发送到Excel时,没有重新绑定,也没有引入动态的sql。我认为它可能是一个失败的原因,因为我只是没有看到RemoveAt(索引)工作,即使没有导致错误。我很困惑我可能会做什么导致gridview.Columns.RemoveAt(index)非常可靠地不执行它的功能:所有列在我完成之后仍然存在。
在下面的代码中,我的目标已经减少到尝试删除单个列,以验证RemoveAt(index)将执行任何操作。
GridView gProgramProposalRequests出现在用户界面中 我正在制作它的副本gridForExport,因为我想删除列,然后将gridForExport传递给导出方法。 “标题”是我网格中的一列,用作此次运行中的示例列。
GridView gridForExport = (GridView)gProgramProposalRequests;
gridForExport.AutoGenerateColumns = false;
for (int i = 0; i < gridForExport.Columns.Count; i++)
{
if (gridForExport.Columns[i].HeaderText == "Title")
gridForExport.Columns.RemoveAt(i);
}
循环后,“标题”仍然存在。我以为我告诉应用程序删除名为Title的列。我看着执行游标执行RemoveAt行。我指定哪一列无关紧要 - 在此循环执行后,我仍然可以找到我命名的列。
跟进 - 我没有成功尝试从GridView的集合中删除列。现在,我有点喜欢将CSV内容写入响应而得到的结果,阻止我添加指定的列。但我必须弄清楚如何在内容字段中处理逗号。感谢http://wiki.asp.net/page.aspx/401/export-to-csv-file/
答案 1 :(得分:2)
使用RemoveAt函数后需要对gridview进行数据绑定:
GridView1.Columns.RemoveAt(0);
GridView1.DataBind();
答案 2 :(得分:0)
GridView1.Columns(0).Visible = False
将0替换为要删除的列(从0,1,2〜开始计数,依此类推) 可以在我的gridview excel报告中使用。
答案 3 :(得分:0)
RemoveAt()无法正常工作
尝试这样的事情
int i;
for (i = 0; i < GV.Columns.Count; i++)
{
if (GV.Columns[i].HeaderText == "Title")
{
GV.Columns[i].Visible = false;
break;
}
}
GV.RenderControl(htmltextwrtter);
Response.Write(strwritter.ToString());
Response.Flush();
Response.End();
GV.Columns[i].Visible = true;