我正在使用CsvHelper库从我的.net代码读取/写入csv文件。
到目前为止,所有功能都运行良好,但是我在使用CsvWriter类写入csv文件时如何保持前导零?目前,字符串值如“020”或“001”在csv文件上打印为“20”和“1”
答案 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 扩展库 - 但对于任何寻求快速而肮脏的方法的人来说,这是一个选择。