¿Cómo se evita que se eliminen los ceros iniciales al importar un documento de Excel usando C#?

StackOverflow https://stackoverflow.com/questions/22879

  •  09-06-2019
  •  | 
  •  

Pregunta

Puedo conectarme y leer un archivo de Excel sin problemas.Pero al importar datos como códigos postales que tienen ceros a la izquierda, ¿cómo se puede evitar que Excel adivine el tipo de datos y en el proceso elimine los ceros a la izquierda?

¿Fue útil?

Solución

Creo que debe configurar la opción en su cadena de conexión para forzar la importación de texto en lugar de detectarla automáticamente.

Provider=Microsoft.ACE.OLEDB.12.0;
    Data Source=c:\path\to\myfile.xlsx;
    Extended Properties=\"Excel 12.0 Xml;IMEX=1\";

Su kilometraje puede variar según la versión que haya instalado.La propiedad extendida IMEX=1 le dice a Excel que trate los datos mezclados como texto.

Otros consejos

Prefijo con '

Anteponer el contenido de la celda con ' obliga a Excel a verlo como texto en lugar de un número.El ' no se mostrará en Excel.

Existe un truco de registro que puede obligar a Excel a leer más de las primeras 8 filas al leer una columna para determinar el tipo:

Cambiar

HKLM\Software\Microsoft\Jet\4.0\Engines\Excel\TypeGuessRows 

Ser 0 para leer todas las filas, u otro número para establecerlo en ese número de filas.

No es que esto vaya a tener un ligero impacto en el rendimiento.

Creo que la forma de hacerlo sería formatear el archivo Excel de origen de modo que la columna tenga el formato Texto en lugar de General.Seleccione toda la columna y haga clic derecho y seleccione formato de celdas, seleccione texto de la lista de opciones.

Creo que eso definiría explícitamente que el contenido de la columna es texto y debe tratarse como tal.

Déjame saber si eso funciona.

Guardar el archivo como un archivo de texto delimitado por tabulaciones también ha funcionado bien.

--- Viejo desafortunadamente, no podemos confiar en las columnas del Doc de Excel para permanecer en un formato particular, ya que los usuarios pegarán los datos regularmente.No quiero que la aplicación falle si confiamos en un determinado tipo de datos para una columna.

prefijar con 'funcionaría, ¿hay una manera razonable de hacerlo mediante programación una vez que los datos ya existen en el documento de Excel?

Enviando valor 00022556 como '=" 00022556"' desde el servidor Sql es una excelente manera de manejar el problema del cero inicial

Agregue " " antes de su cadena.Hará que la cadena aparezca en una nueva pestaña.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top