将GridView导出到Excel并删除一些选定的列

我在这里使用GridView来显示数据。 为了将Gridview数据导出为Excel格式,我使用了一个button – "Download into Excel" 。 下载到Excel格式或导出到Excel是完美的。 该GridView共显示了9列。

我的问题是我想在Excel表格中显示7列(根据我们的select)。 正在显示的GridView应保持照常,但Excel将只显示我们想要的那些列。

我已经使用了GridView1.Columns.RemoveAt(2); 但是这会随机删除更多数量的列。

.Net 4.0; VS2012

在我的类似的情况下 – 大概是基达所描述的,包括button,看到100%的电网出口 – 我认为试图让RemoveAt(索引)去做工作从列表中移除一列是徒劳的我正在导出一个gridview。 我不知道为什么它不,但是我的GridView在RemoveAt之后总是不变。

我在董事会看到过一个类似的问题,那就是接受的答案 – 一个想要导出到Excel的海报,又想在导出时隐藏指定的列 – 只是使他不需要的列不可见。 被访者虽然善意贡献,却错过了这样一个观点:目标是让有问题的列不出现在EXPORT上 – 不只是从屏幕上消失,隐藏列是直接的(设置Visible = false)。

在我的情况下,我试图丢失在GridView的列,当它被发送到Excel,没有重新绑定,没有引入SQL是dynamic的。 我认为这可能是一个失败的原因,因为我只是没有看到RemoveAt(索引)工作,即使没有错误造成的。 我很神秘,我可能会这样做,导致gridview.Columns.RemoveAt(索引)非常可靠地不执行其function:所有列坚持存在后,我已经完成了。

在下面的代码中,我的目标已经减less到试图删除单个列,以validationRemoveAt(索引)将做任何事情。

GridView gProgramProposalRequests出现在UI中。
我正在做一个副本,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); } 

循环之后,“标题”仍然存在。 我以为我已经告诉应用程序删除名为标题的列。 我看着执行游标执行RemoveAt行。 我指定哪一列并不重要 – 在执行这个循环后,我仍然可以find我所指定的列。

后续 – 我没有成功尝试从GridView的集合中删除列。 现在我不喜欢从CSV内容写入响应的结果,而是阻止我添加指定的列。 但是我必须弄清楚如何处理内容字段中的逗号。 感谢http://wiki.asp.net/page.aspx/401/export-to-csv-file/

你需要在使用RemoveAt函数后绑定gridview:

 GridView1.Columns.RemoveAt(0); GridView1.DataBind();