Tag: filehelpers

FileHelpers在字段中引用和逗号

我有一个csv文件,我正在使用FileHelpers解析,我有一个情况,引号和逗号都可以出现在字段中: 逗号: 323,”PC”,”28/02/2014″,”UNI001″,”5000″,0,”Return”,”Returned Goods, damaged”,88.00,15.40,”T1″,”N”,0.00,”R”,”-“, 引用 148,”SI”,”13/01/2014″,”CGS001″,”4000″,1,”5″,”17″ Monitor”,266.00,45.39,”T1″,”Y”,311.39,”R”,”-“, 我的class级是: [DelimitedRecord(“,”)] public class Transaction { public int TRAN_NUMBER; [FieldQuoted(‘”‘, QuoteMode.OptionalForBoth)] public string TypeText; [FieldQuoted(‘”‘, QuoteMode.OptionalForBoth)] public string DATE; [FieldQuoted(‘”‘, QuoteMode.OptionalForBoth)] public string TransactionAccount; [FieldQuoted(‘”‘, QuoteMode.OptionalForBoth)] public string NOMINAL_CODE; public int DEPT_NUMBER; [FieldQuoted(‘”‘, QuoteMode.OptionalForBoth)] public string INV_REF; [FieldQuoted(‘”‘, QuoteMode.OptionalForBoth)] public string DETAILS; public string NET_AMOUNT; public string […]

使用Filehelpers处理DelimitedRecord中的NEWLINE

我使用优秀的FileHelpers库来解析许多不同的文件。 其中一个文件有(某些)看起来像这样的行 id|name|comments|date 01|edov|bla bla bla bla|2012-01-01 02|john|bla bla bla bla|2012-01-02 03|Pete|bla bla bla bla|2012-03-01 04|Mary|bla bla bla bla|2012-01-01 请注意,ID为3的行在文本中有换行符。 另请注意,注释不包含引号,因此[FieldQuoted(‘”‘, MultilineMode.AllowForRead)]不会保存我。 Filehelpers在第4行抛出exception: 分隔符’|’ 字段“注释”后找不到(记录字段较少,分隔符错误或下一个字段必须标记为可选)。 无论如何我可以用FileHelpers解析这个文件吗?

如何为FileHelpers元素类的字段定义默认值

我正在尝试加载CSV文件(delims是’;’,引号是”’)。 我已成功创建了所有内容(向导工具很棒),但有一件事我无法找到解决方案。 基本上,我有一个整数(System.Int32)列。 理论上, 大多数记录在该列中将具有正整数值 。 但是,有时我可能会在该列中遇到值“N / A”。 我想要实现的是,当FileHelpers在该列中遇到“N / A”时,它会分配一个默认值(-1可以正常工作)。 有谁知道这是否可能? PS:我可能需要为System.DateTime字段做同样的事情(有时候它也可能有“N / A”)。

使用没有类型的FileHelpers

我有一个从另一个系统导出的CSV文件,其中列顺序和定义可能会更改。 我发现FileHelpers非常适合读取csv文件,但是除非在编译应用程序之前知道列的顺序,否则它似乎无法使用它。 我想知道它是否可以以非类型的方式使用FileHelpers。 目前我正在使用它来阅读文件,但后来我正在手工做的其他事情,所以我有一个类: [DelimitedRecord(“,”)] public class CSVRow { public string Content { get; set; } } 这意味着每一行都在Content ,这很好,因为我已经分割了行等,但由于文件中固有的逗号,我现在遇到此方法的问题,因此一行可能是: “something”,,,,0,,1,,”something else”,””,””,,,”something, else” 我对这个字符串上的逗号的简单拆分不起作用,因为在“某些东西”中有一个逗号,它会被拆分。 显然,FileHelpers之类的东西非常方便,解析这些值并考虑引号。 那么有可能以这种方式使用FileHelpers,没有已知的列定义,或者至少能够传递一个csv字符串并获取值列表,或者是否有任何好的库来执行此操作?

如何在运行时检测Column数据类型,同时使用标头解析CSV文件

我正在使用FileHelpers加载CSV数据,(信用 – 搜索时找到了这个答案/搜索结果)。 用户浏览目录,选择带有标题的文件,然后上传进行解析。 我的问题是 – 它们是一次性文件,其cols / classes / types以前不知道 。 问题 :如何在解析时检测列的数据类型? 搜索后我发现了一个名为public Type RecordType的函数{ get; } 它提供了记录类型..我需要帮助来获取记录中的Col数据类型。 var fNengine = new FileHelperEngine(); var fNrecords = engine.ReadFile(“AttendeesByEvents.csv”); // How to get the Col types? // HeaderText = typeof(..*notKNown*).GetCsvHeader(); //..var headers = fNrecords.HeaderText(); //foreach (var header in headers) // Console.WriteLine(header.RecordType() + `\n`); 我也在SO上找到了这个答案,但@ shmap00提到的运行时助手或者他所指的帮助不再存在,我也查看了源代码树。 […]

如果未输入,则使用Filehelpers忽略CSV中的最后一行

我使用FileHelpers构建了一个程序来解析CSV文件,除了我遇到问题外,它还可以创建奇迹。 一些文件 – 但不是全部 – 最后有一些额外的行,其中包含与实际字段无关的信息。 像这样 … 31,4104019, ,,1043,,,0,,Ventas Total Credito,1,1,277.98,0,0,0,0,21.5040000000,V, 31, ,11212302,,1043,,,0,,Ventas Total Credito,1,1,33.28,0,0,0,0,21.5040000000,V, 31, ,11212307,,1043,,,0,,Ventas Total Credito,1,1,277.98,0,0,0,0,21.5040000000,V, ;Importado=”01/11/2013″ //blank line here too 我知道FileHelpers有 [IgnoreLast(3)] public class whatever… 选项,但由于只有部分文件具有额外的3行,因此对所有文件使用此选项可能会导致某些文件忽略最后3条记录。 有没有办法告诉它什么时候忽略一条线? 或者我应该先单独阅读文件并自行删除这些行?

FileHelpers:非引用CSV中的可选字段

我正在使用FileHelpers从CSV文件导入数据。 问题是,某些版本的CSV文件比其他版本的字段多。 因此,我已经将有时缺少的字段标记为可选字段,但这似乎不起作用而不是忽略字段丢失时(它似乎没有问题)它也总是砍掉最后一个字符最后一个字段。 例如… 包含“ABC,DEF,GHI”(不带引号)的行导入“ABC”,“DEF”和“GHI” 包含“ABC,DEF”(同样没有引号)的行导入为“ABC”和“DE” 我的记录格式定义如下…… [DelimitedRecord(@”,”)] public class RecordFormat { [FieldTrim(TrimMode.Both)] public String FirstValue; [FieldTrim(TrimMode.Both)] public String SecondValue; [FieldOptional] [FieldTrim(TrimMode.Both)] public String OptionalValue; } 任何人都可以提出我缺少的东西吗? 谢谢。

FieldConverter ConverterKind.Date“dd / MM / yyyy”exception

我尝试读取csv文件。 我的第五个记录是一个日期:03/11/2008 这是我的一段代码: [FieldConverter(ConverterKind.Date, “dd/MM/yyyy”)] public DateTime datum_5; 我的代码崩溃了: Result[] results= (Result[])engine.ReadFile(@”..\Data\expo.txt”); 并且有以下例外:行:1。列:41。字段:datum_5。 错误转换’03 / 11/2008’到类型:’DateTime’。 使用格式:’dd / MM / yyyy’ 当我这样做: [FieldConverter(typeof(ConvertDate))] public DateTime datum_5; 有了这个: internal class ConvertDate : ConverterBase { /// /// different forms for date separator : . or / or space /// /// the string format of date – first […]

从C#中的自定义字段属性获取值

今天早上我开始尝试使用自定义字段属性的快速练习。 尝试了很多东西并搜索了许多例子(大多数涉及类而不是字段属性),我正式陷入困境。 我的代码如下。 一个特点是该类是使用classbuilder在FileHelpers中构建的。 我的各种部分成功尝试确实设法从这个类中获取字段名,所以我相信这部分工作正常。 我想做什么(根据代码中的注释)是a)遍历字段,b)为每个字段运行,查看DBDataTypeAttribute属性是否存在,以及c)看似最难的部分 – 从属性中获取值(FieldType字符串) ,和AllowNulls bool)。 任何评论赞赏! 标记 class Program { static void Main(string[] args) { // Desired output: System.Type userType = null; userType = ClassBuilder.ClassFromString(@” public class ExpenseReport { [FieldQuoted(‘””‘, QuoteMode.OptionalForRead, MultilineMode.AllowForRead)] [DBDataTypeAttribute(FieldType = “”varchar(1000)””, AllowNulls = true)] public String UniqueID; [FieldQuoted(‘””‘, QuoteMode.OptionalForRead, MultilineMode.AllowForRead)] public String ERNum; }”); object[] attributes; […]

使用FileHelper格式化属性

FileHelpers有一个很好的字段日期转换器: [FieldConverter(ConverterKind.Date, “MM-dd-yyyy”)] public DateTime MyDate; 但FieldConverter不适用于属性。 我必须处理使用属性的对象,所以我正在寻找这样的东西: [PropertyConverter(ConverterKind.Date, “MM-dd-yyyy”)] public DateTime MyDate { get; set; } 如何使用属性执行此操作?