Al generar un fichero CSV los campos con número no se almacenan en él como texto (con todos los ceros a la izquierda).

Debo generar un fichero csv a partir de un fichero xlsx, pero al realizarlo veo que los campos con un número no se guardan correctamente. El fichero xlsx tiene una celda que almacena el valor de un código con ceros a la izquierda, en formato xlsx se muestra correctamente porque la celda tiene asociado el formato texto, pero al guardarlo como CSV se pierden erróneamente los ceros a la izquierda del código ¿Me podéis ayudar? ¿Cómo debo generar el fichero CSV para que no se pierdan los ceros a la izquierda?

1 Respuesta

Respuesta
1

.02.03.17

Buenas tardes, Belén

Efectivamente, un formato -aunque fuese de texto- es sólo eso: un formato. Es decir una máscara de cómo mostrar el contenido de una celda.

Por lo tanto, para generar un archivo de texto CSV deberás tener ceros "físicos" que completen las posiciones para ese campo.

A tal fin, te comparto esta fórmula que se adapta a cualquier valor que tuvieras que completar. Si la celda que contiene el número a convertir fuese L2, coloca en otra (L1) por ejemplo, la cantidad de posiciones totales que debe contener ese campo a exportar y, donde quieras la conversión ingresa esta fórmula:

=SI(LARGO(L2)>=$L$1;TEXTO(L2;"#");REEMPLAZAR(REPETIR("0";$L$1);$L$1-LARGO(L2)+1;LARGO(L2);L2))

[Considera si usas comas o punto y coma para separar argumentos de las funciones. Yo usé ";"]

La fórmula compara la cantidad de posiciones que le indicaste y completa con ceros las posiciones faltantes. En caso de que fuese igual o excediese aquel valor, lo convierte a texto sin agregar ceros.

Mira estos ejemplos de su funcionamiento:

Como verás, no es necesario que el valor original tenga formato alguno.

.

Hola Fernando! Muchas gracias por tu respuesta.

Comentar que el contenido de la celda dispone de los valores 0 a la izquierda como contenido. Indico a continuación uno de los registros contenidos en el fichero CSV (en este caso el carácter de separación es un pipeline) donde puedes ver que es así:

2014|0000008312|0000000000|B66|MOS.|10634|38109|005|20130419|20140425|00938

Al abrir el fichero CSV se muestra de esta forma... donde se puede ver que se han perdido los ceros a la izquierda en los campos numéricos:

Tenía entendido que los ficheros CSV mantenían todos los caracteres existentes, al no almacenar información de formato. ¿Cómo puedo hacer que al abrir el fichero CSV se muestren todos los caracteres incluso los ceros a la izquierda?

Gracias por vuestra ayuda!

.

Hola, Belén

OK, había entendido que el problema estaba al crear el CSV.

El problema es que MS Excel covierte a número -por default- lo que parece número.

El proceso de convertir un archivo de texto a formato Excel consta de 3 pasos. Pero, todos lo hacemos, damos "Finalizar" en el segundo paso cuando se le indica el delimitador (en tu caso el pipeline).

Para evitar ese inconveniente que tienes, presiona siguiente e irás a una pantalla como esta:

Allí busca el campo (o campos) que tienes que mantener con todos los ceros y marca la opción "Texto".

Luego sí, presiona Finalizar.


Alternativamente podrías probar con un apostrofo agregado a aquella fórmula que te copartí para evitar este paso que te mencioné.

En tal caso, la fórmula sería similar, como ésta:

=SI(LARGO(L2)>=$L$1;TEXTO(L2;"#");"'"&REEMPLAZAR(REPETIR("0";$L$1);$L$1-LARGO(L2)+1;LARGO(L2);L2))

Sólo le concatené " ' " (apostrofo) antes de la repetición de ceros precedentes.

Espero que esto te ayude

Saludos

Fer

.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas