poner - ¿Cómo se evita que se eliminen los ceros a la izquierda cuando se importa un documento Excel usando c#
cómo poner un 0 a la izquierda en excel? (8)
Creo que debes establecer la opción en tu cadena de conexión para forzar la importación textual en lugar de autodetectarla.
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 entremezclados como texto.
Puedo conectarme y leer un archivo Excel sin problemas. Pero cuando se importan datos tales como códigos postales que tienen ceros a la izquierda, ¿cómo se evita que Excel adivine el tipo de datos y, en el proceso, se eliminen los ceros a la izquierda?
Creo que la forma de hacerlo sería formatear el archivo Excel de origen de forma que la columna tenga el formato de Texto en lugar de General. Seleccione la columna completa y haga clic con el botón derecho y seleccione celdas de formato, seleccione texto de la lista de opciones.
Creo que eso definiría explícitamente que el contenido de la columna es texto y debería tratarse como tal.
Avísame si eso funciona.
La fijación de los contenidos de la celda con ''obliga a Excel a verlo como texto en lugar de como número. El ''no se mostrará en Excel.
Prefijo con ''
Hay un hack de registro que puede obligar a Excel a leer más de las primeras 8 filas al leer una columna para determinar el tipo:
Cambio
HKLM/Software/Microsoft/Jet/4.0/Engines/Excel/TypeGuessRows
Debe ser 0 para leer todas las filas u otro número para establecerlo en ese número de filas.
No es que esto tenga un pequeño golpe de rendimiento.
También ha funcionado bien guardar el archivo como un archivo de texto delimitado por tabuladores.
--- old Desafortunadamente, no podemos confiar en que las columnas del documento Excel permanezcan en un formato particular ya que los usuarios pegarán datos en él regularmente. No quiero que la aplicación se cuelgue si confiamos en cierto tipo de datos para una columna.
prefijar con ''funcionaría, ¿hay una forma razonable de hacerlo programáticamente una vez que los datos ya existan en el documento de Excel?
El envío de valor 00022556
como ''=" 00022556"''
desde el servidor Sql es una excelente manera de manejar el problema del cero inicial
Agregue "/ t" antes de su cadena. Hará que la cadena parezca en una nueva pestaña.