删除复选框在导出的GridView到Excel [英] Remove Checkboxes while exporting Gridview to Excel

查看:139
本文介绍了删除复选框在导出的GridView到Excel的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有需要导出到Excel的GridView。我已成功地删除行复选框,但不知道如何从标题中删除,也完全删除复选框列。感谢您的帮助。

 < ASP:GridView控件ID =GridView1=服务器的AutoGenerateColumns =FALSE的cellpadding =4的DataKeyNames =ID>
    <柱体和GT;
        < ASP:的TemplateField的HeaderText =选择>
            <&HeaderTemplate中GT;
                <输入ID =chkAll的onclick =checkAll(本); =服务器类型=复选框/>
            < / HeaderTemplate中>
            <&ItemTemplate中GT;
            < ASP:复选框ID =CheckBox1=服务器/>
            < / ItemTemplate中>
        < / ASP:的TemplateField>
        < ASP:BoundField的数据字段=事件的HeaderText =事件SORTEX pression =事件/>
        < ASP:BoundField的数据字段=EVENT_DESCRIPTION的HeaderText =EVENT_DESCRIPTIONSORTEX pression =EVENT_DESCRIPTION/>
        < ASP:BoundField的数据字段=起始日期的HeaderText =起始日期SORTEX pression =起始日期/>
    < /专栏>
    < / ASP:GridView的>

下面是后端C#code导出到Excel。

 保护无效download_Click(对象发件人,EventArgs的发送)
{
    prepareGridViewForExport(GridView1);
    Response.ClearContent();
    Response.AddHeader(内容处置,附件;文件名= GridViewToExcel.xls);
    Response.ContentType =应用程序/ EXCEL;
    StringWriter的sWriter =新的StringWriter();
    HtmlTextWriter的hTextWriter =新的HtmlTextWriter(sWriter);
    GridView1.RenderControl(hTextWriter);
    的Response.Write(sWriter.ToString());
    到Response.End();
}
公共覆盖无效VerifyRenderingInServerForm(控制控制)
{
}
私人无效prepareGridViewForExport(控制GV)
{
    文字L =新的文字();
    字符串名称=的String.Empty;
    的for(int i = 0; I< gv.Controls.Count;我++)
    {
        如果(gv.Controls [I] .GetType()== typeof运算(复选框))
        {
            gv.Controls.Remove(gv.Controls [I]);
            gv.Controls.AddAt(I,L);
        }
        如果(gv.Controls [I] .HasControls())
        {
            prepareGridViewForExport(gv.Controls [I]);
        }
    }
}


解决方案

试试这个导出功能,隐藏不需要的行的列柱即0 ...

 保护无效btnExportExcel_Click(对象发件人,EventArgs的发送)
{
    Response.Clear();
    将Response.Buffer =真;
    Response.AddHeader(内容处置,附件;文件名= GridViewExport.xls);
    Response.Charset的=;
    Response.ContentType =应用程序/ vnd.ms-EXCEL;
    StringWriter的SW =新的StringWriter();
    HtmlTextWriter的HW =新的HtmlTextWriter(SW);
    GridView1.DataBind();
    GridView1.HeaderRow.Cells [0] =。可见假的;    的for(int i = 0; I< GridView1.Rows.Count;我++)
    {
       GridViewRow行= GridView1.Rows [I]
       row.Cells [0] =。可见假的;
       。row.Cells [0] .FindControl(chkCol0)可见=虚假的;
     }
    GridView1.RenderControl(HW);
    的Response.Write(样式);
    Response.Output.Write(sw.ToString());
    到Response.End();
}

在您的导出,删除列。事情是这样的:

  GridView1.Columns [0] =。可见假的;
 GridView1.DataBind();
  GridView1.RenderControl(htmlWrite);
 的Response.Write(< META HTTP-当量= \\内容类型\\的内容= \\text / html的;字符集= UTF-8 \\/>中);

I have a gridview that needs to be exported to Excel. I have managed to remove the Checkboxes from Rows but don't know how to remove from the Header and also delete the Checkbox Column entirely. Thanks for help.

    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" CellPadding="4" DataKeyNames="Id">
    <Columns>
        <asp:TemplateField HeaderText="Select" >
            <HeaderTemplate>
                <input id="chkAll" onclick="checkAll(this);" runat="server" type="checkbox" />
            </HeaderTemplate>
            <ItemTemplate>
            <asp:CheckBox  ID="CheckBox1" runat="server" />
            </ItemTemplate>
        </asp:TemplateField>
        <asp:BoundField DataField="Event" HeaderText="Event" SortExpression="Event" />
        <asp:BoundField DataField="Event_Description" HeaderText="Event_Description" SortExpression="Event_Description" />
        <asp:BoundField DataField="Start_Date" HeaderText="Start_Date" SortExpression="Start_Date" />
    </Columns>
    </asp:GridView>

Here's the backend C# code to export to excel.

protected void download_Click(object sender, EventArgs e)
{
    PrepareGridViewForExport(GridView1);
    Response.ClearContent(); 
    Response.AddHeader("content-disposition", "attachment; filename=GridViewToExcel.xls"); 
    Response.ContentType = "application/excel"; 
    StringWriter sWriter = new StringWriter();
    HtmlTextWriter hTextWriter = new HtmlTextWriter(sWriter);
    GridView1.RenderControl(hTextWriter);
    Response.Write(sWriter.ToString());
    Response.End();
}
public override void VerifyRenderingInServerForm(Control control)
{
}
private void PrepareGridViewForExport(Control gv)
{
    Literal l = new Literal();
    string name = String.Empty;
    for (int i = 0; i < gv.Controls.Count; i++)
    {
        if (gv.Controls[i].GetType() == typeof(CheckBox))
        {
            gv.Controls.Remove(gv.Controls[i]);
            gv.Controls.AddAt(i, l);
        }
        if (gv.Controls[i].HasControls())
        {
            PrepareGridViewForExport(gv.Controls[i]);
        }
    }
}

解决方案

Try out this export function , which hides not needed column i.e column 0 of the row...

protected void btnExportExcel_Click(object sender, EventArgs e)
{
    Response.Clear();
    Response.Buffer = true;
    Response.AddHeader("content-disposition", "attachment;filename=GridViewExport.xls");
    Response.Charset = "";
    Response.ContentType = "application/vnd.ms-excel";
    StringWriter sw = new StringWriter();
    HtmlTextWriter hw = new HtmlTextWriter(sw);
    GridView1.DataBind(); 


    GridView1.HeaderRow.Cells[0].Visible = false; 

    for (int i = 0; i < GridView1.Rows.Count;i++ )
    {
       GridViewRow row = GridView1.Rows[i];
       row.Cells[0].Visible = false;
       row.Cells[0].FindControl("chkCol0").Visible = false; 
     }
    GridView1.RenderControl(hw);
    Response.Write(style);
    Response.Output.Write(sw.ToString());
    Response.End();
}

or

On your export, drop the column. Something something like:

GridView1.Columns[0].visible = false;
 GridView1.DataBind();
  GridView1.RenderControl(htmlWrite);
 Response.Write("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />"); 

这篇关于删除复选框在导出的GridView到Excel的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆