Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 导出到Excel,带重音的名称不会正确导出_C#_Asp.net_Excel - Fatal编程技术网

C# 导出到Excel,带重音的名称不会正确导出

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.

我正在从datatable导出一个csv文件,其中包含以下代码。但是,带有重音符号的名称无法正确导出

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;
            }
        }