gpt4 book ai didi

c# - csvhelper 一切都写在 Excel 的一栏中

转载 作者:行者123 更新时间:2023-12-04 21:32:24 26 4
gpt4 key购买 nike

我正在尝试使用 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();
}
}
}


}

我不明白我做错了什么,如果有人能帮助我解决这个问题,我将不胜感激。

以下是我尝试提供数据的方式:
    public System.Data.DataTable ExportToCSV()
{
System.Data.DataTable table = new System.Data.DataTable();
table.Columns.Add("ID", typeof(int));
table.Columns.Add("Name", typeof(string));
table.Columns.Add("Sex", typeof(string));
table.Columns.Add("Subject1", typeof(int));
table.Columns.Add("Subject2", typeof(int));
table.Columns.Add("Subject3", typeof(int));
table.Columns.Add("Subject4", typeof(int));
table.Columns.Add("Subject5", typeof(int));
table.Columns.Add("Subject6", typeof(int));
table.Rows.Add(1, "Amar", "M", 78, 59, 72, 95, 83, 77);
table.Rows.Add(2, "Mohit", "M", 76, 65, 85, 87, 72, 90);
table.Rows.Add(3, "Garima", "F", 77, 73, 83, 64, 86, 63);
table.Rows.Add(4, "jyoti", "F", 55, 77, 85, 69, 70, 86);
table.Rows.Add(5, "Avinash", "M", 87, 73, 69, 75, 67, 81);
table.Rows.Add(6, "Devesh", "M", 92, 87, 78, 73, 75, 72);
return table;
}
}

screenshot of the result

谢谢

最佳答案

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

using (var streamWriter = new StreamWriter(outputFilePath))
{
streamWriter.WriteLine("sep=,"); // make Excel use comma as field separator
using (var csvWriter = new CsvWriter(streamWriter))
{
csvWriter.WriteField("field A");
csvWriter.WriteField("field B");
csvWriter.NextRecord();
}
}

这将解决 Excel 中的问题,但会导致其他电子表格应用程序出现问题。您可以通过 sep=, 来支持两者以预期格式为条件的行。以下是它在 Web UI 中的外观:
download button with 'csv' and 'csv for excel' options

关于c# - csvhelper 一切都写在 Excel 的一栏中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48647247/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com