2010-03-23 6 views
8

Utilicé Python para generar un archivo CSV. Pero cuando lo abra en Excel, Excel reconocerá automáticamente una cadena en un número si se puede convertir.Cómo deshabilitar el reconocimiento automático de números y texto de Excel

p. Ej. 33E105 se convierte en 33*10^105, que en realidad es una identificación, no un número.

¿Cómo deshabilitar esto en Excel al abrir un archivo CSV? ¿O debo recurrir a una biblioteca de excel-python para generar un archivo Excel y especificar el formato yo mismo?

También encontré un similar question sin buenas respuestas en la web.

Gracias!

Respuesta

1

Para escribir archivos .xls reales en Python, en lugar de .csv que Excel puede malinterpretar, puede usar el paquete de Python de xlwt.

+0

Finalmente utilicé xlwt, que también resuelve algunos problemas menores, como formato, ancho, congelación de la primera fila, etc. –

2

Creo que se puede poner un solo ' delante para detener cadenas numéricas se convierten en enteros

Eg.

...,"'33E105",... 

OpenXML es una opción más flexible (y complicado), pero sólo funciona con Office2003 o posterior y es demasiado para este problema. Más adecuado para casos en los que necesite resaltar celdas/varias hojas, etc.

+0

@gnibbler es correcto, prefija un apóstrofo para tratar como literal. – Mikos

4

Puede precederlo con una comilla simple, forzándolo a enviar un mensaje de texto.

Una respuesta divertida es que podría mantener las primeras ocho filas en blanco (solo procesa las primeras ocho filas para determinar el tipo de datos), aunque creo que esto puede borrar por completo todos sus datos. Podrías esconder esas filas vacías.

3

usted tiene 3 opciones:

  • sacar un archivo XML con formato especial que Excel puede leer. No recuerdo ningún detalle, pero si estoy interesado, puedo desenterrarlos. Lo hicimos con nuestro código Perl. No sé si excel-python hace precisamente eso.

  • Coloque ' (apóstrofo) antes de cada cadena.

  • Utilice una biblioteca que imprime archivos nativos de Excel con el formato adecuado. No hay ninguna pista si existe para Python, pero es una especie de variante de overkill de la primera opción en cualquier caso.

+0

Intenté '' ', pero todas las ID tendrán un' '' inicial. –

+0

Liderando '''' lo hará por usted si necesita que la cadena en sí contenga un '' ' – DVK

+0

gracias. Yo uso ', '456607950,' y ',"' 456607950 ",', ambos me dan un '' 'inicial, que no quiero. –

0

Si usted 'no quiere cambiar la forma en que está escribiendo el archivo CSV que puede utilizar el Asistente para importar texto en Excel para especificar cómo desea que las columnas individuales a tratar. Hay un paso en el asistente que le permite seleccionar qué tipo de datos hay en cada columna. Establezca las columnas que desea Texto y lo tratará como una cadena.

Cuestiones relacionadas