none
关于GridView导出隐藏列到Excel中的办法? RRS feed

  • 问题

  • 先是在论坛搜索下,GridView导出excel的,看了“GridView导出Excel的大全”,没有任何一个帖子讲到将隐藏列导入excel的情况,但是,现实需求中确实存在。

    比如说,人事档案的记录,我们就会在人员的姓名上加单击事件,鼠标移上显示一些文本,所以,直接将这个字段本身导出到Excel是极其不合适的,那么,就只好在多显示1列隐藏的“姓名”字段,用户在前台操作仅仅看到带有链接字段的那个姓名字段,没有带链接的“姓名”字段用于导出excel。会在数据绑定Gridview之后,再来控制这个2个字段的显示与隐藏。

    但是,我发现,无论怎样设置这2个字段,this.gridview1.Columns[1].visible=true;this.gridview1.Columns[2].visible=true;即便是我全部都设置为真,导出excel总是带有链接的那个姓名,另一个始终值为空。

    希望我的这个疑问在这里终止。

    我的操作思路是这样的:

    private void GetData()//查询数据

    {

    ....

    this.GridView1.datasource=ds;

    this.GridView1.DataBind();

    if (Flag == 1)//导出数据
    {
    this.GridView1.Columns[1].Visible = false;
    this.GridView1.Columns[2].Visible=true;
    }
    else
    {this.GridView1.Columns[1].Visible = true;
    this.GridView1.Columns[2].Visible = false;
    }

    }

    private void bttnoclick()

    {

    Getdata();

    toexcel();//导出excel方法

    }

    2010年12月23日 1:49

答案

  •  自从加入程序员行业,有一句话,始终在耳边回响:用最少的代码,做更多的事情。所以,每做完一个功能,我会想想他是不是最好的,最简洁的方式。

    就这个问题,我在google搜索了下,找到一个思路,并完美实现隐藏与导出Exel 所需代码量很少,希望版主,能把我这个问题,做为ASP。net常用控件之Givdview控件问题封存,让更多人分享。

    用css实现客户端隐藏,首先定义两个样式,很简单:

    .hidden{display:none}

    .show{display:inline}

    在数据绑定到 GridView控件之后,根据传入的变量值判断是否隐藏或显示即可。

    if (Flag == 1)//导出数据
    {
    this.GridView1.Columns[2].HeaderStyle.CssClass = "Show";
    this.GridView1.Columns[2].ItemStyle.CssClass = "Show";         

    this.GridView1.Column[1].Visible=false;
    }
    else
    {           
    this.GridView1.Columns[2].HeaderStyle.CssClass = "Hidden";
    this.GridView1.Columns[2].ItemStyle.CssClass = "Hidden";      

    this.GridView1.Column[1].Visible=true;      
    }

     这样在导出excel时就不会有空值问题。而不需要导出的第一列,我们可以设置为false即可。

    2010年12月24日 1:16

全部回复

  • 我现在没有找到好的办法,用了2个GridView,一个用来查询数据,一个用来导出excel,晕的很,一个简单字段显示隐藏,多出了这么多代码 的代价。。。。。。。。。。。

     

    等待 。。。。。。高手出来

    2010年12月23日 3:02
  • 既然数据源是ds,为啥要采用GridView 导出呢?可以这样

    http://dotnet.aspx.cc/file/Export-Gridview-To-Excel-With-Multi-Sheet.aspx


    【孟子E章】
    2010年12月24日 0:56
    版主
  •  自从加入程序员行业,有一句话,始终在耳边回响:用最少的代码,做更多的事情。所以,每做完一个功能,我会想想他是不是最好的,最简洁的方式。

    就这个问题,我在google搜索了下,找到一个思路,并完美实现隐藏与导出Exel 所需代码量很少,希望版主,能把我这个问题,做为ASP。net常用控件之Givdview控件问题封存,让更多人分享。

    用css实现客户端隐藏,首先定义两个样式,很简单:

    .hidden{display:none}

    .show{display:inline}

    在数据绑定到 GridView控件之后,根据传入的变量值判断是否隐藏或显示即可。

    if (Flag == 1)//导出数据
    {
    this.GridView1.Columns[2].HeaderStyle.CssClass = "Show";
    this.GridView1.Columns[2].ItemStyle.CssClass = "Show";         

    this.GridView1.Column[1].Visible=false;
    }
    else
    {           
    this.GridView1.Columns[2].HeaderStyle.CssClass = "Hidden";
    this.GridView1.Columns[2].ItemStyle.CssClass = "Hidden";      

    this.GridView1.Column[1].Visible=true;      
    }

     这样在导出excel时就不会有空值问题。而不需要导出的第一列,我们可以设置为false即可。

    2010年12月24日 1:16