嘗試使用ISO-8859-1
:
public static void ExportGridView(DataGrid dataGrid, string fileName)
{
var response = HttpContext.Current.Response;
response.Clear();
response.AddHeader("content-disposition", string.Format("attachment; filename={0}", fileName));
var isoEncoding = Encoding.GetEncoding("iso-8859-1");
response.Charset = isoEncoding.WebName;
response.ContentType = "application/vnd.ms-excel";
response.ContentEncoding = isoEncoding;
using (var writer = new StringWriter())
using (var htmlWriter = new HtmlTextWriter(writer))
{
dataGrid.RenderControl(htmlWriter);
response.Write(writer.GetStringBuilder().ToString());
}
response.End();
}
另一種方法可能會更好是生成一個完整的HTML頁面,並指定UTF8編碼,這恕我直言,是更好:
public static void ExportGridView(DataGrid dataGrid, string fileName)
{
var response = HttpContext.Current.Response;
response.Clear();
response.AddHeader("content-disposition", string.Format("attachment; filename={0}", fileName));
response.Charset = Encoding.UTF8.WebName;
response.ContentType = "application/vnd.ms-excel";
response.ContentEncoding = Encoding.UTF8;
using (var writer = new StringWriter())
using (var htmlWriter = new HtmlTextWriter(writer))
{
dataGrid.RenderControl(htmlWriter);
string html = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\"><html xmlns=\"http://www.w3.org/1999/xhtml\"><head><title>Test</title><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" /></head><body>{0}</body></html>";
response.Write(string.Format(html, writer.GetStringBuilder()));
}
response.End();
}
非常感謝Dick,Darin和所有回答的人。 你的第二個解決方案Darin是完美的,但是ISO-8859-1沒有解決問題。這是UTF8 – 2010-08-31 16:20:00
我試過第二個..但它不適用於我.. y:S? – Grace 2011-06-03 07:17:17
第二種方法適用於我,第一種方法(沒有完整的HTML語法)沒有。使用MS Office Professional Plus 2013打開保存的文件。 – 2013-12-03 15:13:54