我正在将FileHelpers 3.3与VB .net一起使用。我尝试寻找答案已有一段时间,但是我发现的所有信息都涉及到我没有遇到的行为。因此,我开始怀疑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:'行:2列:32.分隔符','在最后一个字段'_transactionTime'之后找到(文件错误或您需要向记录类添加字段)'
这是由第二个字段内的逗号引起的。如果我删除逗号,则一切正常。但是,即使我删除了逗号,transactionDate字符串仍然被引号引起来。
根据我在论坛上阅读的内容,FieldQuoted应该:
但是它不起作用。看起来FieldQuoted指令只是被忽略了。我可以尝试使用BeforeReadRecord事件来处理这些情况,但我认为FieldQuoted正是为了处理此用例而创建的。你能告诉我是否错过了明显的事情吗?
非常感谢您!
答案 0 :(得分:0)
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 issue here。