2012-03-30 15 views
7

Estoy tratando de utilizar C# para leer el archivo que ha entremezclado tipo de datos de Excel. A continuación es mi cadena de conexiónlectura Excel entremezclados Tipo de datos sin modificar la clave del registro

var path = //xls location 
var MyConnection = new OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0; Data Source='" + path + "';Extended Properties='Excel 8.0;IMEX=1;'"); 

Investigación me enseñó que la completa Extended Properties en la cadena de conexión se supone que es

Excel 8.0;IMEX=1;HDR=NO;TypeGuessRows=0;ImportMixedTypes=Text

Sin embargo, me informaron de que en la cadena de conexión, el TypeGuessRows=0tiene no significa ya que el valor será tomado directamente del Registro. Por lo tanto, necesito modificar la clave manualmente y eliminar esta propiedad de la cadena de conexión.

La clave de registro particular que estuvo involucrado es:

Path:

HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Jet \ 4.0 \ Engines \ Excel

Clave:

TypeGuessRows

valor original = , con el fin de hacer que funcione el cambio en =

Sin hacer esto el IMEX no funcionará incluso duro que añadir TypeGuessRows=0 en el Extended Properties.

Sin embargo, mi compañía prohíbe la modificación de valor de registro (en sentido estricto). Me dijeron que encontrara alternativas para hacer esto.

En resumen:

¿Hay una manera de lectura tipo de datos entremezclados sobresalir archivo sin tener que modificar cualquier clave de registro (que es una práctica bastante común)?

Además tema:

¿Ha experimentado esto antes? ¿Hay posibilidades de que podamos establecer TypeGuessRows=0 solo en la cadena de conexión sin tener que modificar la clave de registro (cancelando mi premisa anterior).

Si las cosas no salen con OleDb:

¿Hay alternativas al lado OleDb?

Agradezco cualquier consejo o sugerencia.

Saludos

Respuesta

6

Lo que puede hacer es exigir tener encabezado en primera fila de Excel y cadena de conexión se establece en

var MyConnection = new OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0; Data Source='" + path + "';Extended Properties='Excel 8.0;HDR=No;IMEX=1;'"); 

La clave aquí es establecer HDR = No se (sin encabezado), sin embargo, ya que usted tiene encabezado ahora cada columna se tratará como cadena (texto), y puede hacer análisis sintáctico o validación en cada valor de celda. Por supuesto, deberá omitir o eliminar la primera fila, ya que contiene información del encabezado.

Cuestiones relacionadas