我正在使用LinqToCSV将List输出到CSV。示例代码片段如下:
class Person
{
[CsvColumn(Name = "Name", FieldIndex = 1)]
public string UserName { get; set; }
[CsvColumn(Name = "Address 1", FieldIndex = 2)]
public string Address1 { get; set; }
[CsvColumn(Name = "Telephone", FieldIndex = 3)]
public string Telephone { get; set; }
}
private void OutputToCSV(string filenamePrefix, List<Person> people)
{
CsvFileDescription outputFileDescription = new CsvFileDescription
{
SeparatorChar = ','
FirstLineHasColumnNames = true,
FileCultureName = "en-GB"
};
CsvContext cc = new CsvContext();
cc.Write(
people,
@"C:\temp\people.csv",
outputFileDescription);
}
我遇到的问题是电话号码。如果它在对象中为0123456789012,那么当我在Excel中打开CSV时,它被视为一个数字,并且前导零被删除。我想预先将CSV中的列格式化为文本。
根据Stop Excel from automatically converting certain text values to dates我可以用等号开始字段并将值放在引号中,但是我可以设置一个属性,这意味着LinqToCSV会为我做这个吗?我真的不想使用LinqToCSV,然后打开文件并编辑它以获得我想要的。
答案 0 :(得分:1)
您是否打算创建CSV或Excel文件?如果是后者,那么如果你使用Nuget的Epplus会更容易吗?即:
cat $(find -regex '.*\.cd?$') | wc -l
答案 1 :(得分:0)
尝试使用OutputFormat强制它ToString()。您也可以将它与其他修复程序结合使用,并使用OutputFormat =&#34; = C&#34;但我没试过。
[CsvColumn(Name = "Telephone", FieldIndex = 3, OutputFormat = "C")]
public string Telephone { get; set; }
答案 2 :(得分:-1)
正如您所说,这是一个Excel问题,您需要将数据设置为前导符号,以便0123456789012变为=&#34; 0123456789012&#34;。
您可以使用OutputFormat更改格式,但您需要使用格式:
[CsvColumn(FieldIndex = 2, OutputFormat = "dd MMM HH:mm:ss")]