microsoft for conexion cadena c# connection-string oledbconnection import-from-excel

c# - for - Ayuda con una cadena de conexión OleDB para archivos excel



oledb connection string for excel 2016 (1)

Desafortunadamente, no puede establecer ImportMixedTypes o TypeGuessRows desde la cadena de conexión ya que esas configuraciones están definidas en el registro. Para el controlador ACE OleDb, se almacenan en

HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Office/14.0/Access Connectivity Engine/Engines/Excel

en el registro. Por lo tanto, puede simplificar su cadena de conexión para:

conn.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:/Users/Nick/Desktop/Pricing2.xlsx;Extended Properties=""Excel 12.0 Xml;HDR=Yes;IMEX=1;""";

Una vez que establezca TypeGuessRows en 0 e ImportMixedTypes en Text en el registro, debe obtener el comportamiento que espera. Sin embargo, podría considerar usar un número adecuadamente grande como 1000 en lugar de cero si encuentra que el rendimiento de importación es inferior al ideal.

El problema que tengo es que el adaptador de datos solo mira la primera fila de cada columna para determinar el tipo de datos. En mi caso, la primera columna "SKU" son los números de las primeras 500 filas y luego tengo SKU que son números y letras mixtas. Entonces, lo que termina sucediendo es que las filas en la columna de SKU se dejan en blanco, pero todavía obtengo la otra información para cada fila de columna.

Creo que es la cadena de conexión que controla eso y con mi configuración actual debería funcionar, pero no lo es.

Cadena de conexión:

conn.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:/Users/Nick/Desktop/Pricing2.xlsx" + @";Extended Properties=""Excel 12.0 Xml;HDR=Yes;IMEX=1;ImportMixedTypes=Text;TypeGuessRows=0""";


ImportMixedTypes=Text;TypeGuessRows=0

Deben ser las palabras clave importantes, mirar las filas 0 y simplemente usar texto como tipos de valor para todo.

El "bandaid" que he puesto en esto es hacer que la primera fila de la hoja de cálculo sea una mezcla de letras y números y específicamente dejar esa fila en mi consulta.