locked
Remove an image from a templatefield when exporting to Excel? RRS feed

  • Question

  • User2028823583 posted

    Hi there.  I'm working with a vb.net gridview that has a template field that consists of both a label and an image.  When I export the data to excel, I do not want to export the image, just the data.  Is there a way to "hide" or "delete" the image named "imgOrdered" when it's exported to Excel? 

    Here's my template field from my .aspx.

    <asp:TemplateField HeaderText="Ordered" SortExpression="Ordered">
             <ItemTemplate>
                <asp:Label ID="lblOrdered" runat="server" Text='<%# Bind("Ordered") %>' ForeColor="#EEEEEE"></asp:Label>
                <asp:Image ID="imgOrdered" runat="server"  ImageUrl="~/Img/Checkmark.jpg"
                    Visible='<%# iif(DataBinder.Eval(Container.DataItem,"Ordered").ToString = "No" , "False" , "True") %>' />
             </ItemTemplate>
    </asp:TemplateField>

    and here's my Export to Excel from my vb.net code behind. 

     Private Sub ExportToExcel(ByVal strFileName As String, ByVal dg As GridView)
            Response.Clear()
            Response.Buffer = True
            Response.ContentType = "application/vnd.ms-excel"
            Response.AddHeader("content-disposition", "attachment;filename=" & strFileName)
            Response.Charset = ""
            Me.EnableViewState = False
            Dim StringWriter As New System.IO.StringWriter()
            Dim HtmlTextWriter As New System.Web.UI.HtmlTextWriter(StringWriter)
            gvReport.RenderControl(HtmlTextWriter)
            Response.Write(StringWriter.ToString())
            Response.End()
    
        End Sub

    Tuesday, March 20, 2018 12:49 PM

Answers

  • User2028823583 posted

    Hi there.  I ended up adding this, to hide the image...

    For i As Integer = 0 To gvReport.Rows.Count - 1
         Dim row As GridViewRow = gvReport.Rows(i)
         row.Cells(5).FindControl("Image1").Visible = False
    Next

    • Marked as answer by Anonymous Thursday, October 7, 2021 12:00 AM
    Tuesday, March 20, 2018 7:10 PM

All replies

  • User2028823583 posted

    Note.. I tried setting the column visibility equal to false, but that "hides" the label that is also in that cell.  So this code didn't work for me.   I appreciate any suggestions you might have....

    gvReport.Columns(5).Visible = False

    Tuesday, March 20, 2018 2:47 PM
  • User632428103 posted

    Hello funluckyKitty,

      void ExportToExcel(DataTable datas, int nbColumnsDisplayed, string reportName)
            {
                DataTable dt = datas;
                string attachment = string.Format("attachment; filename={0}", reportName);
                Response.ClearContent();
                Response.AddHeader("content-disposition", attachment);
                Response.ContentType = "application/vnd.ms-excel";
                string tab = "";
    
                //export column name
                for (int i = 0; i < nbColumnsDisplayed; i++)
                {
                    Response.Write(tab + dt.Columns[i].ColumnName);
                    tab = "\t";
                }
    
                Response.Write("\n");
    
                // export rows
                foreach (DataRow dr in dt.Rows)
                {
                    tab = "";
    
                    for (int i = 0; i < nbColumnsDisplayed; i++)
                    {
                        Response.Write(tab + dr[i].ToString());
                        tab = "\t";
                    }
                    Response.Write("\n");
                }
                Response.End();
            }

    try this method 

    Tuesday, March 20, 2018 3:55 PM
  • User2028823583 posted

    Hi there.  I ended up adding this, to hide the image...

    For i As Integer = 0 To gvReport.Rows.Count - 1
         Dim row As GridViewRow = gvReport.Rows(i)
         row.Cells(5).FindControl("Image1").Visible = False
    Next

    • Marked as answer by Anonymous Thursday, October 7, 2021 12:00 AM
    Tuesday, March 20, 2018 7:10 PM