2013-10-11 3 views
0

Добрый день, я пытался импортировать поле из файла txt/csv, и он продолжает вызывать ошибку в моем импорте. Я знаю, почему я просто не могу понять, как его решить. У меня есть строка, указанная ниже, которая вызывает ошибку при ее запуске. Проблема в том, что описание аварии правильно цитируется, но также содержит другой набор двойных кавычек. Есть ли какой-нибудь способ для выделения кавычек из строки с кавычками?Проблемы с импортом FileHelpers

"123456","I heard a "pop" in my shoulder","01/01/1900" 

Это класс FileHelpers

Namespace xxx 
    <DelimitedRecord(","), IgnoreFirst(1)> 
    Public Class yyy 

     <FieldQuoted()> _ 
     Public IDAs String 
     <FieldQuoted()> _ 
     Public AccidentDescr As String 
     <FieldQuoted()> <FieldConverter(ConverterKind.Date, "yyyy-MM-dd")> _ 
     Public DOI As DateTime 

любая помощь будет большим

+0

раздел мой код извините –

+0

, как вы читаете файл? ... и это утро здесь ... – Plutonix

+0

дим двигателя = Новый FileHelperEngine (GetType (xxx.yyy)) Dim данные Как xxx.yyy() = DirectCast (engine.ReadFile (Me.txtFileName.Text), xxx.yyy()) –

ответ

0

Хитрость заключается в том, чтобы не использовать атрибут FieldQuoted, но вместо применения пользовательского FieldConverter, чтобы удалить кавычки.

Public Class MyQuotedStringConverter 
    Inherits ConverterBase 
    Public Overrides Function StringToField(from As String) As Object 
     ' StringToField() is used by import. The 'from' parameter will contain all the text between the comma delimiters (including all quotes) 

     Dim result As String = from 
     ' remove the first and last quotes 
     If result IsNot Nothing Then 
      If result.StartsWith("""") Then 
       result = result.SubString(1) 
      End If 
      If result.EndsWith("""") Then 
       result = result.SubString(0, result.Length - 1) 
      End If 
     End If 
     Return result 
    End Function 

    Public Overrides Function FieldToString(fieldValue As Object) As String 
     ' FieldToString is used by export 
     Return fieldValue.ToString() 
    End Function 
End Class 

И измените любые поля проблем, чтобы использовать преобразователь. Например

<DelimitedRecord(","), IgnoreFirst(1)> 
Public Class yyy 

    <FieldConverter(GetType(MyQuotedStringConverter))> _ 
    Public IDAs String 
    <FieldConverter(GetType(MyQuotedStringConverter))> _ 
    Public AccidentDescr As String 
    <FieldQuoted()> <FieldConverter(ConverterKind.Date, "yyyy-MM-dd")> _ 
    Public DOI As DateTime 
Смежные вопросы