在 C# 中使用 CsvHelper 编写 class 的列表时输出错误
Wrong output when Write a list of class using CsvHelper in C#
我想将我的 class 导出到 .csv 文件中,我遵循以下评论:
但是当我导出时(在 Buses_Data.Buses_List 中),我有错误的数据输出,所有数据都在同一行:
public void ExportToCSV(Buses_Data classToExport, string filepath)
{
try
{
if (File.Exists(filepath))
{
Console.WriteLine("Le fichier existe");
System.IO.File.Delete(filepath);
Console.WriteLine("l'ancien fichier à été supprimé");
}
Console.WriteLine("Export :...");
using (StreamWriter sw = new StreamWriter(filepath))
using (CsvWriter cw = new CsvWriter(sw))
{
cw.WriteHeader<Bus>();
foreach (Bus emp in classToExport.Buses_List)
{
cw.WriteRecord<Bus>(emp);
}
}
Console.WriteLine("Export CSV: OK");
}
catch (Exception i)
{
Console.WriteLine("Error ! " + i);
}
}
我不知道为什么代码不起作用
编辑:
错误的输出:
右输出(数据不对应)
编辑 2:
我试过这个评论:
using (StreamWriter sw = new StreamWriter(filepath))
using (CsvWriter cw = new CsvWriter(sw))
{
cw.WriteHeader<Bus>();
foreach (Bus emp in classToExport.Buses_List)
{
cw.WriteRecord<Bus>(emp);
sw.NewLine = "\n";
cw.NextRecord();
}
}
我有更好的结果,但我的 Bus N°1 在第一行,而不是第二行
解决方案:
using (StreamWriter sw = new StreamWriter(filepath))
using (CsvWriter cw = new CsvWriter(sw))
{
cw.WriteHeader<Bus>();
cw.NextRecord();
foreach (Bus emp in classToExport.Buses_List)
{
cw.WriteRecord<Bus>(emp);
//sw.NewLine = "\n";
cw.NextRecord();
}
}
你试过了吗CsvWriter.NextRecord
?
foreach (Bus emp in classToExport.Buses_List)
{
cw.WriteRecord<Bus>(emp);
cw.NextRecord();
}
基于 GitHub issue 的回答,由 Josh Close 撰写:
You need to call NextRecord()
when you're done writing the header.
This is so you can write more fields manually before or after.
我试过了,效果不错
我想将我的 class 导出到 .csv 文件中,我遵循以下评论:
但是当我导出时(在 Buses_Data.Buses_List 中),我有错误的数据输出,所有数据都在同一行:
public void ExportToCSV(Buses_Data classToExport, string filepath)
{
try
{
if (File.Exists(filepath))
{
Console.WriteLine("Le fichier existe");
System.IO.File.Delete(filepath);
Console.WriteLine("l'ancien fichier à été supprimé");
}
Console.WriteLine("Export :...");
using (StreamWriter sw = new StreamWriter(filepath))
using (CsvWriter cw = new CsvWriter(sw))
{
cw.WriteHeader<Bus>();
foreach (Bus emp in classToExport.Buses_List)
{
cw.WriteRecord<Bus>(emp);
}
}
Console.WriteLine("Export CSV: OK");
}
catch (Exception i)
{
Console.WriteLine("Error ! " + i);
}
}
我不知道为什么代码不起作用
编辑:
错误的输出:
右输出(数据不对应)
编辑 2:
我试过这个评论:
using (StreamWriter sw = new StreamWriter(filepath))
using (CsvWriter cw = new CsvWriter(sw))
{
cw.WriteHeader<Bus>();
foreach (Bus emp in classToExport.Buses_List)
{
cw.WriteRecord<Bus>(emp);
sw.NewLine = "\n";
cw.NextRecord();
}
}
我有更好的结果,但我的 Bus N°1 在第一行,而不是第二行
解决方案:
using (StreamWriter sw = new StreamWriter(filepath))
using (CsvWriter cw = new CsvWriter(sw))
{
cw.WriteHeader<Bus>();
cw.NextRecord();
foreach (Bus emp in classToExport.Buses_List)
{
cw.WriteRecord<Bus>(emp);
//sw.NewLine = "\n";
cw.NextRecord();
}
}
你试过了吗CsvWriter.NextRecord
?
foreach (Bus emp in classToExport.Buses_List)
{
cw.WriteRecord<Bus>(emp);
cw.NextRecord();
}
基于 GitHub issue 的回答,由 Josh Close 撰写:
You need to call
NextRecord()
when you're done writing the header. This is so you can write more fields manually before or after.
我试过了,效果不错