【问题标题】:Dyanamically selecting which CSV fields are written动态选择写入哪些 CSV 字段
【发布时间】:2010-10-21 09:41:39
【问题描述】:

我正在使用 FileHelpers 将一些数据写入 CSV 文件。 FileHelpers 很棒,因为它让我可以使用 FileHelper 转换器轻松格式化各种字段。这是 FileHelpers DelimitedRecord 的示例:

[DelimitedRecord(",")]   
public class ShippedRecord   
{

    public string Customer;

    #quouted as can contain ',' characters
    [FieldQuoted]
    public string Address;

    [FieldConverter(ConverterKind.Date, "yyyy-MM-dd")]   
    public DateTime ShippedDate;

    [FieldConverter(ConverterKind.Date, "yyyy-MM-dd")]
    public DateTime ReceivedDate;

    public string DaysTillDelivery;

    public string DeliveryStatus;   
}

我希望用户能够通过配置文件指定他们希望将哪些字段写入 CSV 文件。使用 FileHelpers,如何动态更改写入 CSV 文件的字段?我知道我可能可以使用 DataTable 之类的东西,但我不确定如何格式化字段(引用值、日期格式等),如果可能的话,我更喜欢使用 FileHelpers 提供的简单转换器。如果不可能,我该如何根据上面的示例记录使用 DataTable 格式化字段?

【问题讨论】:

    标签: c# csv formatting filehelpers


    【解决方案1】:

    您可以使用CsvEngine.DataTableToCsv Method (DataTable, String, CsvOptions) overload 并设置“CsvOptions”。似乎有一些关于字段格式、引用值、日期格式等的配置设置

    (虽然我自己没有尝试过)

    【讨论】:

    • 我看过这个,但不幸的是文档说它只允许设置分隔符。
    • @swisstony - 您可以设置CsvOptions 的其他公共属性,例如CsvOptions.DateFormat。是的,构造函数仅限于分隔符。
    • 谢谢,看起来不错。我现在可以看到如何设置日期格式。但是,如何指定应引用特定列的值?
    • @swisstony - 你让我到了那里 - 我认为 CsvOptions 以一般方式工作并适用于所有领域。
    • @swisstony 除非我误解了,否则您应该能够使用 [FieldQuoted] 属性,就像您在需要引用的任何其他字段上使用 Address 一样。字段可以应用 N 个属性,虽然我还没有尝试添加多个转换器。
    猜你喜欢
    • 2021-06-01
    • 2017-03-21
    • 2018-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-18
    相关资源
    最近更新 更多