【发布时间】:2019-12-19 03:18:54
【问题描述】:
我想将我的课程导出为 .csv 文件,我关注此评论:https://stackoverflow.com/a/38088636/10152334
但是当我导出(在 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: 我试过这个评论:Enforce LF line endings with CsvHelper
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();
}
}
我有更好的结果,但我的巴士 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();
}
}
【问题讨论】:
-
CSV 文件只是带有分隔符的文本文件。你检查过实际文件吗?它包含什么?此处发布的屏幕截图根本没有帮助
-
可能是您用来导入 CSV 数据的任何程序都无法识别换行符,最终将所有内容都显示在同一行中。例如,当您双击 CSV 文件并希望它在 Excel 中打开时,Excel 会使用系统默认的换行符、小数点和列表分隔符导入数据。你必须去
Data > From Text指定你想要的分隔符 -
如果您想为 Excel 创建文件,为什么不使用 Epplus 之类的库创建 实际 Excel 文件?
-
@PanagiotisKanavos 我使用的是 Microsoft Office 企业版 2019,但它可以与其他文件一起使用
-
@Bensuperpc 在
WriteHeader之后添加NextRecord()。 CsvWriter 本身就是这样做的
标签: c# .net csv export-to-csv csvhelper