我在线阅读了几个教程,似乎遗漏了一些东西。我试图通过将格式设置为文本来使列表中的前导0显示。
任何建议都将不胜感激。
''' <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
答案 0 :(得分:5)
有一种更好的方法可以获得相同的结果,只需添加一行即可。
不是使用循环创建样式表并为所有<TD>
标记添加属性,而是直接在所有TD标记上应用样式。
string style = @"<style> TD { mso-number-format:\@; } </style>";
答案 1 :(得分:0)
检查出来:how to Export GridView To Word Excel PDF and CSV documents
工作正常。非常好。谢谢