オンラインでいくつかのチュートリアルを読み、何か不足しているようです。フォーマットをテキストに設定することで、先頭の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
リンクが無効です。 – rossisdead
リンクが修正されました – LPL