gpt4 book ai didi

c# - 使用 CsvHelper 强制 LF 行结尾

转载 作者:太空狗 更新时间:2023-10-29 22:36:57 54 4
gpt4 key购买 nike

如果我有一些 LF 转换(使用 N++)的 CSV 文件,每次我使用 JoshClose 的 CsvHelper 向它们写入数据时,行结尾都会返回到 CRLF。

因为我在 SQL Server 中遇到了 CLRF ROWTERMINATORS 问题,所以我希望保留我的行尾,就像文件的初始状态一样。

无法在文化设置中找到它,我编译了我自己版本的库。

如何进行?

最佳答案

使用 CsvHelper 时丢失或不正确的 Newline 字符是一个常见的问题,有一个简单但记录不完整的解决方案。这个 SO 问题的其他答案是正确的,但缺少一个重要的细节。

配置允许您从四个可用选项中选择一个:

// Pick one of these alternatives
CsvWriter.Configuration.NewLine = NewLine.CR;
CsvWriter.Configuration.NewLine = NewLine.LF;
CsvWriter.Configuration.NewLine = NewLine.CRLF;
CsvWriter.Configuration.NewLine = NewLine.Environment;

然而,很多人都被以下事实所困扰:(设计)当您使用 CsvWriter.WriteHeader() 编写 header 时,CsvWriter 不会发出任何换行符当您使用 CsvWriter.WriteRecord() 写入单个记录时也不会。原因是您可以编写额外的标题元素或额外的记录元素,当您的标题和行数据来自两个或多个类而不是来自一个类时您可能会这样做。

当您调用 CsvWriter.NextRecord() 时,CsvWriter 确实 发出定义的换行符类型,并且作者 JoshClose 声明您应该调用 NextRecord() 在您完成标题之后以及在您完成使用 WriteRecord 添加的每一行之后。 See GitHub Issues List 929

当您使用 WriteRecords() 编写多条记录时,CsvWriter 会在每条记录的末尾自动发出定义类型的换行符。

在我看来,这应该得到更好的记录,但事实就是如此。

关于c# - 使用 CsvHelper 强制 LF 行结尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28420135/

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