导出到Excel中,带有重音的名称不会导出正确

我正在导出一个csv文件与数据表下面的代码。 但是带有重音的名称不能正确导出

http://screencast.com/t/i9N2mB34DL

var dt=JobContext.GetEngagementLetterReport(SPContext.Current.Site, int.Parse(rdlOption.SelectedValue)); var columnNames = new List<string> { Constants.SearchFields.Client.ClientCode, Constants.SearchFields.Client.ClientName, Constants.SearchFields.Job.JobCode, Constants.SearchFields.Job.JobName, Constants.SearchFields.Job.JobPartner, Constants.SearchFields.Job.JobDirector, Constants.SearchFields.Job.JobManager, Constants.SearchFields.Job.BillContact, Constants.SearchFields.Job.LineOfService, Constants.SearchFields.Job.BusinessUnit, Constants.SearchFields.Job.OperatingUnit, "JobSiteUrl", "FileNameUrl" }; ExcelHelper.ExportDatatabletoExcel(dt, columnNames); public static void ExportDatatabletoExcel(DataTable dt, List<string> columnNames) { try { const string attachment = "attachment; filename=elreport.csv"; HttpContext.Current.Response.ClearContent(); HttpContext.Current.Response.AddHeader("content-disposition", attachment); HttpContext.Current.Response.ContentType = "application/vnd.ms-excel"; string tab = ""; foreach (DataColumn dc in dt.Columns) { if (!columnNames.Contains(dc.ColumnName)) continue; HttpContext.Current.Response.Write(tab + dc.ColumnName); tab = ";"; } HttpContext.Current.Response.Write("\n"); int i; foreach (DataRow dr in dt.Rows) { tab = ""; for (i = 0; i < dt.Columns.Count; i++) { if(!columnNames.Contains(dt.Columns[i].ColumnName)) continue; HttpContext.Current.Response.Write(tab + dr[i].ToString()); tab = ";"; } HttpContext.Current.Response.Write("\n"); } HttpContext.Current.Response.End(); } catch (Exception ex) { string errorMessage = String.Format("ExportToExcelError: {0}", ex.Message); LoggingService.LogError(LoggingCategory.General, ex, errorMessage); throw; } } 

设置内容types后尝试添加以下内容。

// This is the missing part from your original code to set the charset and encoding - if this does not work, replace it with appropriate value, eg Response.Charset = "utf-8"; Response.ContentEncoding = Encoding.UTF8;

// You might want to use this content type or experiment with appropriate MIME type Response.ContentType = "text/csv";

TQ。