none
前輩請問,將html table輸出成Excel時,文數字表示法問題? RRS feed

  • 問題

  • 請問各位前輩,小弟日前用vs2003(我想用2005應該也一樣吧)寫了個簡單的程式,

    建立一個簡單的DataGrid或GridView,然後將網頁以*.xls(excel)輸出。

    輸出過程均很順利。但是,遇到數字的話(如000234),我發現excel會把它給變成數字模示,即變成234而已

    我的000會不見,而我希望它不要把它當數字,仍然視為文字輸出。請問該如何做呢?

    我在dataset要給DataGrid或GridView做binding前,也試過把000234變換成  '000234[前面多一個引號,因為excel中我前面打那個符號,它會將型態變為文字型別而非數字],可卻不會變換為文字型別,而是真的輸出成  '000234不變,而不是000234。唉!!!!

    請各位前輩幫忙  解套

    感謝                 小弟          萬分感激

     

    2006年11月30日 下午 02:23

解答

  • 給一段程式碼供您參考,關鍵的地方以粗體表示,加上即可解決您的問題。

     Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim style As String = "<style> .text { mso-number-format:\@; } </script> "
            Response.AppendHeader("Content-Disposition", "attachment; filename=excel.xls")
            Response.ContentType = "application/vnd.ms-excel"
            Dim sw As New System.IO.StringWriter


            Dim hw As New System.Web.UI.HtmlTextWriter(sw)
            GridView1.RenderControl(hw)
            Response.Write(style)
            Response.Write(sw.ToString())
            Response.End()
        End Sub

         Protected Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowDataBound
            e.Row.Cells(1).Attributes.Add("class", "text")
        End Sub

    2006年11月30日 下午 03:24
    版主