No puedo averiguar por qué, pero cuando yo uso una OleDbDataAdapter o OleDbCommand para leer un archivo CSV, en ambos casos, los datos resultantes está bien estructurado (reconoce las columnas en el archivo de cabecera), pero los datos de la fila es de todas las cadenas vacías.

He hecho CSV de procesamiento antes de que muchas veces con éxito, por lo que la única diferencia que encontré con este archivo es que todos los campos en el archivo entre comillas.

He intentado usar un esquema.archivo ini, pero fue en vano. Esto se siente como un problema con el Microsoft Jet 4.0 componente, pero no puedo averiguar cuál es el problema.

Aquí es un extracto del archivo:

"UNIQUEID","OWNERID","PHONE1","PHONE2","EMERGENCYCONTACT","ADDRESS1","ADDRESS2","ADDRESS3","ADDRESSCITY","ADDRESSSTATE","ADDRESSZIP","UNIONCODE","CUSTOM1","CUSTOM2","CUSTOM3","CUSTOM4","CUSTOM5","CUSTOM6"
"5","33","1235551212","          ","","1914 SANDFLAT ROAD","","","THOMASVILLE","AL","367849215","","contract","7.75","1","N","","A"
"6","34","1235551212","          ","","1407 OLD HWY. 5 SOUTH","","","THOMASVILLE","AL","36784","","contract","7.75","1","N","","B"
"7","35","1235551212","          ","","P.O. BOX 204","","","THOMASVILLE","AL","36784","","substitute","7.75","0","Y","","M"
"8","36","1235551212","          ","","383 UNCLE BEN RD","","","THOMASVILLE","AL","36784","","substitute","0.00","0","","",""

Aquí está mi código actual:

OleDbConnection conn = new OleDbConnection(
    "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\payroll;" + 
    "Extended Properties=\"text;HDR=Yes;FMT=CSVDelimited\"");
OleDbDataAdapter adapter = new OleDbDataAdapter("select * from file.txt", conn);
DataTable dt = new DataTable();
adapter.Fill(dt);

Aquí está el contenido del esquema.en el archivo ini. Yo no podía leer el archivo sin ella:

[file.txt]
Format=CSVDelimited
ColNameHeader=True
Col1="UNIQUEID" Text
Col2="OWNERID" Text
Col3="PHONE1" Text
Col4="PHONE2" Text
Col5="EMERGENCYCONTACT" Text
Col6="ADDRESS1" Text
Col7="ADDRESS2" Text
Col8="ADDRESS3" Text
Col9="ADDRESSCITY" Text
Col10="ADDRESSSTATE" Text
Col11="ADDRESSZIP" Text
Col12="UNIONCODE" Text
Col13="CUSTOM1" Text
Col14="CUSTOM2" Text
Col15="CUSTOM3" Text
Col16="CUSTOM4" Text
Col17="CUSTOM5" Text
Col18="CUSTOM6" Text
CharacterSet=ANSI
  • Puedes mostrar un ejemplo de su código actual?
  • Iniciar el esquema.ini con una línea vacía.
  • A partir del esquema.ini con una línea vacía no cambiar nada.
InformationsquelleAutor Lane | 2010-11-12

2 Comentarios

  1. 2

    Me enteré de qué se trata la cuestión. El conjunto de caracteres en el esquema.archivo ini se establece en la norma ANSI. El archivo está codificado en Unicode. Establecer el conjunto de caracteres Unicode resuelto el problema.

  2. 1

    Lo que es otro brillante alternativa es el uso de la FileHelpers biblioteca @ http://www.filehelpers.com

    Su mucho más abstracto y flexible que la de un motor de jet, que permite hacer cosas como en la importación del archivo para generar una colección directamente de su tipo en la marcha con las personalizaciones.

    yo.e

    FileHelperEngine motor = new FileHelperEngine();
    Lista de clientes = motor.ReadFile(«Archivo.csv»);

    Esto es sólo el principio, y entonces se puede llegar a mucho más limpiador mediante el uso de operadores de linq en su colección.

    Sk8tz

Dejar respuesta

Please enter your comment!
Please enter your name here