13 votos

¿Cómo puedo evitar que Numbers manipule los números al importar un CSV?

Cuando abro un archivo CSV en Numbers, éste convierte de forma "útil" los campos que reconoce como numéricos quitando los ceros a la izquierda, convirtiendo las cosas que reconoce como fechas, etc.

Por ejemplo, usted escribe un código UPC en una hoja de cálculo de Numbers 005566778899 Numbers lo convertirá automáticamente en 5566778899 . Esto no es lo que querría...

Sin embargo, la forma I utilizar Numbers, abro bases de datos con miles de códigos UPC con ceros precedentes. Algunas de ellas también contienen fechas que Numbers también reformulará. Básicamente no quiero ninguna de estas características, quiero que mi contenido se quede solo.

¿Cómo puedo hacer que Numbers deje mis datos intactos cuando abro un archivo CSV?

Convertir los campos en texto después de la importación no ayudará, ya que los datos ya fueron manipulados...

0 votos

¿A qué te refieres con que los datos ya estaban manipulados? ¿Te refieres a la conversión a texto después de ¿el archivo está abierto?

0 votos

Al abrir el archivo, tanto Excel como Numbers cambiarán alrededor de todos sus datos. Así que lo que sea que tenga que hacer, tengo que hacerlo antes de abrir el archivo.

0 votos

7 años después esto sigue siendo un agujero enorme. Es problemático que un viaje de ida y vuelta desde csv -> Numbers -> csv modifique las celdas. Los ceros a la izquierda son un buen ejemplo. Otro son los porcentajes (por ejemplo, el 20% se convierte en 0,2). Otro es la notación científica (por ejemplo, 1E-2 se convierte en 0,01). Envolver entre comillas dobles no ayuda, y anteponer un apóstrofe se interpreta literalmente. Creo que la mejor opción podría ser anteponer un apóstrofe a todo antes de la importación y eliminar todos los apóstrofes iniciales después de la exportación...

7voto

TraFoO Puntos 11

Si un campo en un archivo CSV comienza con un apóstrofe ( ' ), tanto Excel como Numbers tratarán el campo como texto, y no lo representarán con ningún formato numérico.

Parece que tus archivos CSV intentan forzar la representación del texto encerrando los campos numéricos entre comillas dobles, pero Numbers y Excel no parecen entender que los números entre comillas dobles deben ser tratados como cadenas. El truco parece consistir en modificar los archivos CSV para que utilicen el truco de "comienza con un apóstrofe simple" en lugar del truco de "contenido entre comillas dobles" para los campos numéricos, pero mantener las comillas dobles para los campos de texto que incluyan puntuación (incluyendo comas, comillas, saltos de línea, etc.).

Para procesar sus archivos CSV para que hagan esto, puede crear una aplicación Automator.

En Automator, cree una nueva aplicación.

Tendrá una sola acción: Ejecutar Shell script (pasando la entrada como argumentos). Aquí está el script:

for f in "$@"
do
    perl -pi -e "s/\"\"([0-9A-Za-z: \.\-+]+)\"/'\1/g" "$f"
done

Guarde la aplicación resultante en su Escritorio. Suelta los archivos CSV que quieras utilizar en Numbers en el icono de la aplicación, y se convertirán para que Numbers mantenga los números de los campos como números literales, y no los formatee ni tire información.

Haga una copia de seguridad de sus datos antes de intentar esto; es posible que una cadena construida de forma particularmente extraña en un campo de registro pueda hacer variar los resultados aquí.

enter image description here

0 votos

Hacer que esto funcione parece que necesita algo de interacción. Esta discusión sería mejor se producen en el chat

0voto

Yon Puntos 804

En concreto, aquí se explica cómo manejar ceros a la izquierda . Creo que tu pregunta se refiere más al formato de las celdas que a la autocorrección.

Como se ha mencionado, la función de autocorrección es un elemento del sistema y debe desactivarse desde las Preferencias del Sistema.

0 votos

Convertir las celdas a este formato no servirá de nada ya que los datos ya fueron manipulados...

1 votos

Habría esperado que los ceros volvieran a aparecer si se formatean las celdas - si Numbers elimina destructivamente esos ceros en la importación eso sería realmente una mierda. Tal vez usted va a tener que dar formato a las células antes de la importación.

0 votos

Definitivamente sí.

0voto

Heath Raftery Puntos 1

Gracias a este respuesta y otros, ahora existe un método con las siguientes ventajas:

  • Funciona tanto en Excel como en Numbers
  • Se puede automatizar.
  • Es invisible en los números.
  • Produce archivos CSV de impacto cero desde la importación hasta la exportación.

El truco consiste en no anteponer a cada campo un apóstrofe ni envolverlo con comillas dobles, sino anteponerlo con =" y el sufijo con " . En la importación, Numbers trata el contenido del campo como una cadena y en la exportación elimina el prefijo y el sufijo.

Aquí hay un práctico forro que preprocesa un archivo llamado my.csv :

sed 's/^/="/;s/,/",="/g;s/$/"/' my.csv | sed 's/=""//g' > tmp.csv

La primera sed pone =" al principio de cada línea, cambia cada coma por ",=" y luego termina cada línea con " . El segundo sed y luego elimina los campos vacíos, porque Numbers se ahoga con ellos. Por último, escribe un archivo llamado tmp.csv que se puede duplicar al hacer clic o pasar a open para importar a Numbers.

En la práctica, esto hará que los campos que contengan comas queden desordenados. Sería mejor que sólo envolviera los campos que comienzan con números, pero entonces tendría que tener cuidado con el comienzo y el final de cada línea y con su versión de las expresiones regulares. Esto servirá en MacOS:

sed -E 's/(^|,)([[:digit:]][^,]*)($|,)/\1="\2"\3/g'

Es decir, coincide con el inicio de la línea o una coma, un dígito y luego cualquier número de caracteres que no sean comas, y luego el final de la línea u otra coma. Reemplazar con el mismo principio y final, pero con el bit del medio envuelto en =" y " .

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X