title: Export Gridview to Excel with rows formatted as text
body: <p>I have read several tutorials online and seem to be missing something.  I am trying to have the leading 0's show up in columns by setting the format to text.</p>
  
  <p>Any suggestions would be appreciated.</p>
  
  <pre><code>    ''' &lt;summary&gt;
      ''' This is required for the grid view to export properly
      ''' &lt;/summary&gt;
      ''' &lt;param name="control"&gt;&lt;/param&gt;
      ''' &lt;remarks&gt;&lt;/remarks&gt;
      Public Overrides Sub VerifyRenderingInServerForm(ByVal control As System.Web.UI.Control)
      End Sub
  
      Protected Overrides Sub OnInitComplete(ByVal e As System.EventArgs)
  
              Dim List As System.Web.UI.WebControls.GridView = CType(Page.FindControl("List"), System.Web.UI.WebControls.GridView)
              AddHandler List.RowDataBound, AddressOf RowDataBound
  
              List.DataSource = myList
              List.DataBind()
  
              Response.Clear()
              Response.ContentType = "application/vnd.ms-excel"
              HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=ExportList.xls")
  
              Response.Write("&lt;style&gt; .text {mso-number-format:\@; } &lt;/style&gt;")
  
              Using strwriter As New System.IO.StringWriter
                  Using htmlwriter As New HtmlTextWriter(strwriter)
  
                      List.RenderControl(htmlwriter)
  
                      HttpContext.Current.Response.Write(strwriter.ToString)
                      HttpContext.Current.ApplicationInstance.CompleteRequest()
                  End Using
              End Using
  
      End Sub
  
      Protected Sub RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs)
  
          If e.Row.RowType = DataControlRowType.DataRow Then
  
              e.Row.Cells(0).Attributes.Add("class", "text")
  
              Dim dtview As System.Data.DataRowView
              Dim dt As DateTime
              Dim intCounter As Integer
  
              dtview = e.Row.DataItem
  
              For intCounter = 0 To dtview.Row.ItemArray.Length - 1
  
                  If TypeOf dtview.Row.Item(intCounter) Is System.DateTime Then
                      dt = dtview.Row.Item(intCounter)
                      e.Row.Cells(intCounter).Text = dt.ToLongDateString
                  End If
  
              Next
          End If
  
      End Sub
  </code></pre>