2009-09-01 4 views
2

온라인 튜토리얼을 읽었으며 뭔가 누락 된 것 같습니다. 형식을 텍스트로 설정하여 주요 0 표시를 열에 표시하려고합니다.텍스트 형식의 행을 사용하여 Gridview를 Excel로 내 보냅니다.

의견을 보내 주시면 감사하겠습니다.

''' <summary> 
    ''' This is required for the grid view to export properly 
    ''' </summary> 
    ''' <param name="control"></param> 
    ''' <remarks></remarks> 
    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("<style> .text {mso-number-format:\@; } </style>") 

      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 

답변

4

동일한 결과를 얻으려면 더 좋은 방법이 있습니다. 한 줄을 추가하면 효과가 있습니다. 루프를 사용하여 모든 <TD> 태그에 스타일 시트를 만들고 속성을 추가하는 대신 모든 TD 태그에 스타일을 직접 적용하십시오.

string style = @"<style> TD { mso-number-format:\@; } </style>"; 
+0

이것은 실제로 작동합니다. 제 경우에는 일부 숫자 형식이 Excel에서 날짜로 표시되지 않습니다. 문자열은 여전히 ​​텍스트로 표시됩니다. –

관련 문제