ลองแก้ Response.Charset แล้วก็ยังไม่ได้ครับ ค้นใน google ก็เลยเจอว่าน่าจะเป็นเพราะคำสั่งที่ export นั้นไม่สนับสนุน UTF8 ผมใช้ StringWriter ครับ พอลองมาค้นดูก็เจอว่า StreamWriter มันรองรับการทำ Encoding ได้ ก็เลยปิ๊งครับ
gvContact.DataSource = mlSummaries
gvContact.DataBind()
Response.Clear()
Response.AddHeader("content-disposition", "attachment;filename=EventMailingList.xls")
Response.Charset = "tis-620"
Response.ContentType = "application/vnd.ms-excel"
If Request("EventName") IsNot Nothing Then lblCaption.Text = Server.UrlDecode(Request("EventName"))
' โค้ดเดิมที่ใช้ไม่ได้
'Dim stringWrite As New System.IO.StringWriter
'Dim htmlWrite As System.Web.UI.HtmlTextWriter = New HtmlTextWriter(stringWrite)
'divExport.RenderControl(htmlWrite)
'Response.Write(stringWrite.ToString())
Dim ms As New System.IO.MemoryStream()
Dim streamWrite As New System.IO.StreamWriter(ms, Encoding.UTF8)
Dim htmlWrite As New System.Web.UI.HtmlTextWriter(streamWrite)
divExport.RenderControl(htmlWrite)
Dim strEncodedHTML As String = Encoding.UTF8.GetString(ms.ToArray)
Response.Write(strEncodedHTML)
Response.End()
ทดลองดูใช้ได้ครับ ออกมาเป็นภาษาไทยถูกต้องแล้ว
๑๐ ความคิดเห็น:
หรือจะลองใช้แบบนี้ก็ได้ครับ
Response.Clear();
Response.AddHeader("content-disposition","attachment;filename=Export1.xls");
Response.ContentType = "application/ms-excel";
Response.ContentEncoding = System.Text.Encoding.Unicode;
Response.BinaryWrite(System.Text.Encoding.Unicode.GetPreamble());
System.IO.StringWriter sw = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter hw = new HtmlTextWriter(sw);
GridView1.RenderControl(hw);
Response.Write(sw.ToString());
Response.End();
ขอบคุณสำหรับบทความดีๆ
ถ้าไม่มีบทความนี้เราคงแย่
ขอบคุณจริงๆ ค่ะ : )
เจ๋งมากเลยครับ
รู้ไหมครับผมเสียเวลาหาโค้ดตรงนี้เกือบครึ่งค่อนวัน ดีใจที่หาโค้ดนี้เจอ ขอบคุณนะครับ
ขอบคุณ ขอบคุณ ขอบคุณครับ
ขอบคุณมากครับ
สุดยอดครับ ขอบคุณครับ
ขอบคุณครับ สุดยอดจริงๆ
Response.BinaryWrite(System.Text.Encoding.Unicode.GetPreamble());
อธิบายบรรนี้ให้ฟังหน่อยครับ คืออะไรครับ
Response.BinaryWrite(System.Text.Encoding.Unicode.GetPreamble());
#อันนี้ได้
ขอบคุณมากครับ ได้แล้วครับ
แสดงความคิดเห็น