C# csvhelper所有内容都写在Excel的一列中

C# csvhelper所有内容都写在Excel的一列中,c#,excel,csv,csvhelper,C#,Excel,Csv,Csvhelper,我正试图使用csvhelper通过以下教程创建我的csv文件,但我的所有数据都只写在一列中。这是我的代码: 编辑从评论中我了解到,问题在于excel读取csv文件。我找到了一些解决方案,可以通过在Excel设置中进行一些更改来解决此问题,在这种情况下,我的问题是:我的代码中是否有解决此问题的方法,即不需要在Excel设置中进行任何更改就可以正确读取csv文件 public void CreateCSVFile() { using (var sw = new Str

我正试图使用csvhelper通过以下教程创建我的csv文件,但我的所有数据都只写在一列中。这是我的代码:

编辑从评论中我了解到,问题在于excel读取csv文件。我找到了一些解决方案,可以通过在Excel设置中进行一些更改来解决此问题,在这种情况下,我的问题是:我的代码中是否有解决此问题的方法,即不需要在Excel设置中进行任何更改就可以正确读取csv文件

    public void CreateCSVFile()
    {
        using (var sw = new StreamWriter(@"countrylistoutput.csv"))
        {
            var writer = new CsvWriter(sw);
            using (var dt = ExportToCSV())
            {
                foreach (DataColumn column in dt.Columns)
                {
                    writer.WriteField(column.ColumnName);
                }
                writer.NextRecord();

                foreach (DataRow row in dt.Rows)
                {
                    for (var i = 0; i < dt.Columns.Count; i++)
                    {
                        writer.WriteField(row[i]);
                    }
                    writer.NextRecord();
                }
            }
        }


    }


谢谢当Excel不使用逗号作为字段分隔符时会发生这种情况(这取决于Excel的区域设置)。Excel的具体解决方案是在文件顶部的任何标题上方添加一个特殊的
sep=,
行。例如:

使用(var streamWriter=newstreamwriter(outputFilePath))
{
streamWriter.WriteLine(“sep=,”);//使Excel使用逗号作为字段分隔符
使用(var csvWriter=新的csvWriter(streamWriter))
{
csvWriter.WriteField(“字段A”);
csvWriter.WriteField(“字段B”);
csvWriter.NextRecord();
}
}
这将解决Excel中的问题,但会导致其他电子表格应用程序出现问题。您可以通过将
sep=,
行设置为所需格式的条件来支持这两种格式。以下是在web UI中的外观:

您的CSV很可能看起来像

a,b,c
d,e,f
你必须做到这一点

"a","b","c"
"d","e","f"

没什么问题。您使用
在Excel中导入了该文件
作为列表分隔符,而不是
。双击CSV文件时,Excel将使用区域设置的列表分隔符导入该文件。在
为十进制分隔符的区域设置中,列表分隔符为
。导出时请设置不同的列表分隔符,或者使用
File>Open
Data>Insert
以自己的设置导入文件。另一方面,如果要在Excel中读取文件,请使用EPPlus使用eg
sheet.LoadFromDataTable(dt)
Hi Panagiotis创建一个真正的
xlsx
文件,我添加了显示如何输入数据的方法,所以问这个问题的正确方法可能是,在修改问题时,如何输入数据,使结果也可以由excel打开(不仅仅是excel),添加至少标记为update:或类似的内容。很难讨论不断变化的问题
"a","b","c"
"d","e","f"