2009-05-24 27 views
10

Tengo que crear un programa C# que haga archivos CSV y ponga números largos (como cadena en mi programa). El problema es que cuando abro el archivo CSV en Excel los números aparecen así:¿Cómo se muestran números largos en Excel?

1234E + o 1234560000000 (al final de la serie es 0)

Cómo conservar el formato de los números? Si abro el archivo como un archivo de texto, los números están formateados correctamente.

Gracias de antemano.

Respuesta

8

Formato esas largas cadenas de números como por poner un '(apóstrofe) delante o hacer una fórmula de ella: = '1234567890123'

+1

El apóstrofo se vuelve visible en Excel, sin embargo, el truco de la fórmula es gr comer. – Chris

0

No se puede. Excel almacena números con quince dígitos de precisión. Si no le importa no poder realizar cálculos en los números desde Excel, puede almacenarlos como Texto y se mostrarán todos los dígitos.

0

Cuando genero datos para importarlos a Excel, no genero un archivo CSV si deseo control sobre cómo se muestran los datos. En cambio, escribo un archivo de Excel donde las propiedades de las celdas se configuran apropiadamente. No sé si hay una biblioteca por ahí que pueda hacer eso por usted en C# sin requerir que se instale Excel en la máquina que genera los archivos, pero es algo a tener en cuenta.

16

Como han mencionado otros, puede forzar que los datos sean una cadena. La mejor manera para eso fue = "1234567890123". The = hace que la celda sea una fórmula, y las comillas hacen que el valor adjunto sea una cadena de Excel literal. Esto mostrará todos los dígitos, incluso más allá del límite de precisión numérica de Excel, pero la celda (generalmente) no podrá usarse directamente en los cálculos numéricos.

Si necesita que los datos permanezcan numéricos, la mejor manera es probablemente crear un archivo nativo de Excel (.xls o .xlsx). Varios enfoques para eso se pueden encontrar en las soluciones a this related Stack Overflow question.

Si no te importa tener miles de separadores, hay otro truco que puedes usar, que es hacer que tu programa C# inserte los separadores de miles y rodear el valor entre comillas: "1,234,567,890,123". No incluya una línea = (ya que eso la forzará a ser una cadena). Tenga en cuenta que en este caso, las comillas son para proteger las comas en el CSV, no para especificar un literal de cadena de Excel.

+0

La técnica de comas parece funcionar solo con 15 dígitos de precisión, después de eso se convierte en ceros. Al menos no está en notación científica, sin embargo. – Chris

+0

¡El truco para el truco = "1234564 ...", funciona muy bien! Tendré que recordar eso. – Chris

0

        Mis dos centavos:
        creo que es importante darse cuenta de que hay una diferencia entre "datos" y "Formato". En este ejemplo, está tratando de almacenar ambos en un archivo de solo datos. Esto, como puede ver en otras respuestas, cambiará la naturaleza de los datos. (En otras palabras, haga que se convierta en una cadena. Un archivo CSV es solo un archivo de datos. Puede hacer algunos trucos aquí y allá para fusionar el formato con datos, pero a mi modo de pensar, esto esencialmente corrompe los datos al fusionarse con valores que no son de datos: es decir, "Formateo".
        Si realmente necesita poder almacenar información de formato, le sugiero que, si tiene tiempo para desarrollarla, cambie a un tipo de archivo capaz de almacenar información de formato por separado de los datos. Parece que este problema sería un buen candidato para una solución de hoja de cálculo XML. De esta manera, no solo puede especificar sus datos, sino también su tipo y cualquier formato que elija usar.

Cuestiones relacionadas