Gridview : Export To Excel ฉบับสมบูรณ์ (แก้บัคภาษาไทยด้วย)

   การเขียนโปรแกรมโดยใช้งาน Control ที่ชื่อว่า Gridview เชื่อได้ว่าทุกคนคงต้องเจอว่า "อยากได้ข้อมูลตารางนี้เป็น Excel ทำไงดี ทำให้พี่หน่อย - -a" ดังนั้นจากประสบการณ์ที่ผ่านมาเจอปัญหาส่วนใหญ่กรณีที่ข้อมูลใน Gridview เป็นภาษาไทย พอทำการ Export จะเจอปัญหาว่า ภาษาไทยเพี้ยนบ้างไรบ้าง ขอสรุปแยกเป็น 2 วิธีการดังนี้

1. กรณี Gridview ไม่มีการใช้งาน Template Field

   1.1) นำ Code ด้านล่าง ไปใส่ที่ปุ่ม Export Excel ได้เลย โดยที่ตั้งชื่อ Gridview เป็น gv
Response.ClearContent()
Response.AddHeader("content-disposition", "attachment;filename=file.xls")
Response.ContentEncoding = System.Text.Encoding.UTF8
Response.Charset = ""
Response.Cache.SetCacheability(HttpCacheability.NoCache)
Response.ContentType = "application/vnd.xls"
Dim tw As New System.IO.StringWriter()
Dim hw As New System.Web.UI.HtmlTextWriter(tw)
Dim frm As New HtmlForm()
frm.Attributes("runat") = "server"
frm.Controls.Add(gv)
gv_Series.RenderControl(hw)
Response.Write(tw.ToString())
Response.End()

2. กรณี Gridview มีการใช้งาน Template Field (ใช้งาน Control ต่างๆใน Gridview)

   2.1) นำ Code ด้านล่าง ไปใส่ที่ปุ่ม Export Excel ได้เลย โดยที่ตั้งชื่อ Gridview เป็น gv
Dim sw As New System.IO.StringWriter()
Dim hw As New HtmlTextWriter(sw)
Response.AddHeader("content-disposition", "attachment;filename=ReportTransactionType.xls")
Response.ClearContent()
gv.RenderControl(hw)
Response.Write(sw.ToString())
Response.Flush()
Response.End()

   2.2) นำ Code ด้านล่าง ไปใส่ก่อน Event ของปุ่ม Export Excel 
Public Overloads Overrides Sub VerifyRenderingInServerForm(ByVal control As Control)

End Sub


Comments

Popular posts from this blog

การตั้งเวลาระหว่าง Server และ Client

วิธีตั้งค่า NTP บน Primary Domain Controller

Installation and Run Node.JS on IIS