C# csvhelper所有内容都写在Excel的一列中
我正试图使用csvhelper通过以下教程创建我的csv文件,但我的所有数据都只写在一列中。这是我的代码: 编辑从评论中我了解到,问题在于excel读取csv文件。我找到了一些解决方案,可以通过在Excel设置中进行一些更改来解决此问题,在这种情况下,我的问题是:我的代码中是否有解决此问题的方法,即不需要在Excel设置中进行任何更改就可以正确读取csv文件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
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使用egsheet.LoadFromDataTable(dt)
Hi Panagiotis创建一个真正的xlsx
文件,我添加了显示如何输入数据的方法,所以问这个问题的正确方法可能是,在修改问题时,如何输入数据,使结果也可以由excel打开(不仅仅是excel),添加至少标记为update:或类似的内容。很难讨论不断变化的问题
"a","b","c"
"d","e","f"