C# 导出到Excel,带重音的名称不会正确导出
我正在从datatable导出一个csv文件,其中包含以下代码。但是,带有重音符号的名称无法正确导出C# 导出到Excel,带重音的名称不会正确导出,c#,asp.net,excel,C#,Asp.net,Excel,我正在从datatable导出一个csv文件,其中包含以下代码。但是,带有重音符号的名称无法正确导出 var dt=JobContext.GetEngagementLetterReport(SPContext.Current.Site,int.Parse(rdlOption.SelectedValue)); var columnNames=新列表 { Constants.SearchFields.Client.ClientCode, Constants.SearchFields.Client.
var dt=JobContext.GetEngagementLetterReport(SPContext.Current.Site,int.Parse(rdlOption.SelectedValue));
var columnNames=新列表
{
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”,
“文件名URL”
};
ExcelHelper.ExportDatatabletoExcel(dt,columnNames);
公共静态void ExportDatatabletoExcel(DataTable dt,列表列名)
{
尝试
{
const string attachment=“attachment;filename=elreport.csv”;
HttpContext.Current.Response.ClearContent();
HttpContext.Current.Response.AddHeader(“内容处置”,附件);
HttpContext.Current.Response.ContentType=“应用程序/vnd.ms excel”;
字符串选项卡=“”;
foreach(数据列dc在dt.列中)
{
如果(!columnNames.Contains(dc.ColumnName))继续;
HttpContext.Current.Response.Write(tab+dc.ColumnName);
tab=“;”;
}
HttpContext.Current.Response.Write(“\n”);
int i;
foreach(数据行dr在dt.行中)
{
tab=“”;
对于(i=0;i
设置内容类型后,尝试添加以下内容
//这是设置字符集和编码的原始代码中缺少的部分-如果这不起作用,请用适当的值替换它,例如
响应。Charset=“utf-8”;
Response.ContentEncoding=Encoding.UTF8代码>
//您可能希望使用此内容类型或尝试使用适当的MIME类型
Response.ContentType=“text/csv”代码>
TQ.您是否尝试过使用标题“Content Type”和值“text/csv;charset=utf-8”?这没有帮助,我注意到数据表上的数据是正确的。
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;
}
}