我在VB .net中使用FileHelpers 3.3。我尝试寻找答案已有一段时间,但是我发现的所有信息都涉及到我没有遇到的行为。因此,我开始怀疑FileHelpers中的错误。
我有一个非常简单的CSV:
Description,Transaction Date,Transaction Time
01567,"Sep 1, 2018",12:47:32 AM PDT
01567,"Sep 1, 2018",12:47:32 AM PDT
81475,"Sep 1, 2018",12:52:18 AM PDT
因此,我在VB中声明了一个包含这些数据的类:
<DelimitedRecord(","), IgnoreFirst(1)>
Public Class Sale
Public Property description() As String
<FieldQuoted(QuoteMode.AlwaysQuoted)>
Public Property transactionDate() As String
Public Property transactionTime() As String
End Class
当我使用以下命令读取文件时:
Dim engine As FileHelperEngine(Of Sale) = New FileHelperEngine(Of Sale)
Dim records = engine.ReadFile("D:\Projects\test.txt")
我收到以下错误:FileHelpers.BadUsageException:'Line:2 Column:32. Delimiter','在最后一个字段'_transactionTime'之后找到(文件错误,或者您需要将一个字段添加到记录类中)'
这是由第二个字段内的逗号引起的。如果我删除逗号,则一切正常。但是,即使我删除了逗号,transactionDate字符串仍然被引号引起来。
根据我在论坛上阅读的内容,FieldQuoted应该:
但这是行不通的。看起来FieldQuoted指令被简单地忽略了。我可以尝试使用BeforeReadRecord事件来处理这些情况,但我认为FieldQuoted正是为了处理此用例而创建的。你能告诉我是否错过了明显的事情吗?
非常感谢你!
FileHelpers需要的字段不是VB中的属性。以下工作符合预期。
<DelimitedRecord(","), IgnoreFirst(1)>
Public Class Sale
Public description As String
<FieldQuoted(QuoteMode.AlwaysQuoted)>
Public transactionDate As String
Public transactionTime As String
End Class
最初FileHelpers仅支持字段。在版本3中添加了对C#自动实现属性的支持,但VB.NET中尚不支持属性。这里有一个长期未解决的Github问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句