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

同じ結果を達成するには、1行追加するとより効果的です。 ループを使用してすべての<TD>タグのスタイルシートを作成し、属性を追加する代わりに、すべてのTDタグにスタイルを直接適用します。

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

これは実際に動作します。私の場合、いくつかの数値書式はExcelの日付として表示されなくなります。文字列はまだテキストとして表示されます。 –

関連する問題