ASP.NET Excel export encoding problem ASP.NET Excel export encoding problem asp.net asp.net

ASP.NET Excel export encoding problem


Well I found out that the problem could be in the header of the excel file, that it does not contain the BOM byte sequence (at the beginning of the file representing the encoding used).

So I made it this way and it works for me:

Response.Clear();Response.AddHeader("content-disposition","attachment;filename=Test.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);FormView1.RenderControl(hw);Response.Write(sw.ToString());Response.End(); 


Have you tried setting the encoding in a meta tag in the HTML?

<meta http-equiv="content-type" content="application/xhtml+xml; charset=UTF-8" />

Excel won't see the response headers, so it won't know what the Response.Encoding is. The meta tag allows it to find out.


For instances where UTF8 is needed...

FileInfo dataExportFile = new FileInfo(dsExport.Tables[0].Rows[0]["DataExportFile"].ToString());Response.Clear();Response.ContentType = "application/ms-excel";                        Response.AddHeader("Content-Disposition", "attachment;filename=" + dataExportFile.Name);Response.ContentEncoding = System.Text.Encoding.UTF8;Response.BinaryWrite(System.Text.Encoding.UTF8.GetPreamble());Response.TransmitFile(dataExportFile.FullName);