如何在CsvHelper CsvWriter中保留前导零?

时间:2014-05-13 09:21:01

标签: .net vb.net csv csvhelper

我正在使用CsvHelper库从我的.net代码读取/写入csv文件。

到目前为止,所有功能都运行良好,但是我在使用CsvWriter类写入csv文件时如何保持前导零?目前,字符串值如“020”或“001”在csv文件上打印为“20”和“1”

3 个答案:

答案 0 :(得分:3)

在检查了我的问题的评论后,我发现前导零实际上存储在CSV文件中。令人困惑的是,当在Excel上打开文件时,它会自动格式化数字字段,修剪前导零,因此它显示为“20”和“1”而不是020和001。

答案 1 :(得分:3)

这是一个已知问题,有一个已知的解决方案,如下所述:

解决方案是以这种格式写一个数字:

="001"

这些不起作用(2010年测试) - 修剪前导零:001"001"=001

答案 2 :(得分:2)

CsvHelper 不再包含基础库中与 Excel 相关的功能。

如果您不使用引号,则在编写 C# POCO 时包含等号 (=) 符号的一个简单技巧是对导致问题的特定字段使用只读字段,并应用格式和字符串投射过去。

using CsvHelper.Configuration.Attributes;

public class MyRecord
{
    [Ignore]
    public long Long => 0000012345;
    
    [Name("Long")]
    public string LongExcel => @$"=""{Long}""";
}

可能有更好的方法来做到这一点,包括使用 Excel 扩展库 - 但对于任何寻求快速而肮脏的方法的人来说,这是一个选择。