Tengo una base de datos que rastrea las ventas de widgets por número de serie. Los usuarios ingresan los datos y la cantidad del comprador, y escanean cada widget en un programa de cliente personalizado. Luego finalizan el pedido. Todo esto funciona a la perfección.
Algunos clientes quieren una hoja de cálculo compatible con Excel de los widgets que han comprado. Generamos esto con un script PHP que consulta la base de datos y genera el resultado como un CSV con el nombre de la tienda y los datos asociados. Esto funciona perfectamente bien también.
Cuando se abre en un editor de texto como Notepad o vi, el archivo se ve así:
"Account Number","Store Name","S1","S2","S3","Widget Type","Date"
"4173","SpeedyCorp","268435459705526269","","268435459705526269","848 Model Widget","2011-01-17"
Como puede ver, los números de serie están presentes (en este caso dos veces, no todas las series secundarias son iguales) y son largas cadenas de números. Cuando este archivo se abre en Excel, el resultado se convierte en:
Account Number Store Name S1 S2 S3 Widget Type Date
4173 SpeedyCorp 2.68435E+17 2.68435E+17 848 Model Widget 2011-01-17
Como puede haber observado, los números de serie están encerrados entre comillas dobles. Excel no parece respetar los calificadores de texto en archivos .csv. Al importar estos archivos a Access, tenemos cero dificultades. Al abrirlos como texto, no hay problema en absoluto. Pero Excel, sin falta, convierte estos archivos en basura inútil. Intentar instruir a los usuarios finales en el arte de abrir un archivo CSV con una aplicación no predeterminada se está volviendo, digamos, agotador. ¿Hay esperanza? ¿Hay alguna configuración que no haya podido encontrar? Este parece ser el caso con Excel 2003, 2007 y 2010.
fuente
Excel does not seem to respect text qualifiers in .csv files
- las comillas dobles no son calificadores de texto, simplemente permiten comas en sus datos, si no usa comas en sus datos, entonces no tienen sentido . Todos los datos en un archivo CSV no están tipificados, por lo que Excel solo puede adivinar que su número de serie grande es un número , y es entonces cuando se ejecuta con la precisión máxima de Excel de 15 dígitos, que es lo que está truncando sus números.Respuestas:
Excel es basura inútil.
Solución
Me sorprendería un poco si cualquier cliente que deseara sus datos en formato Excel no pudiera cambiar el formato visible en esas tres columnas a "Número" con cero decimales o "texto". Pero supongamos que un breve documento de instrucciones está fuera de discusión.
Sus opciones son:
="268435459705526269","",="268435459705526269"
(también puedes="268435459705526269",,="268435459705526269"
ahorrarte 2 caracteres). Esto tiene la ventaja de mostrar correctamente, y probablemente sea generalmente útil, pero sutilmente roto (ya que son fórmulas).Tenga cuidado con la opción 3, porque algunos programas (incluidos Excel y Open Office Calc), ya no tratarán las comas dentro de los
=""
campos como escapó. Eso significa="abc,xyz"
que abarcará dos columnas y romperá la importación.El uso del formato de
"=""abc,xy"""
resuelve este problema, pero este método aún lo limita a 255 caracteres debido al límite de longitud de la fórmula de Excel.fuente
Tuvimos un problema similar en el que teníamos archivos CSV con columnas que contenían rangos como 3-5 y Excel siempre los convertía en fechas, por ejemplo, 3-5 sería el 3 de marzo, después de lo cual volver a numérico nos dio un entero de fecha inútil. Lo solucionamos por
Podrías hacer lo mismo aquí, creo.
Salud
fuente
La mejor solución es generar un libro de trabajo XML. Me gusta esto:
El archivo debe tener la extensión .xml. Excel y OpenOffice lo abren correctamente.
fuente
Mi solución: tengo el mismo problema con la importación de números de serie. No tienen que tratarse como números, es decir, no se realizan funciones matemáticas en él, pero necesitamos el número completo allí. Lo más simple que tengo es insertar un espacio en el número de serie. por ejemplo, "12345678 90123456 1234". Cuando Excel lo importe, se tratará como texto en lugar de como numérico.
fuente
Tenía números de cuenta largos siendo ilegibles.
Así es como lo arreglé:
Abra su archivo.csv en Libre Office / Open Office (puede que tenga que especificar delimitadores, etc.) y luego guarde el archivo como un archivo XML de Excel.
Luego abra este archivo en Excel y verá que las columnas ya no se cambian a formato científico o lo que sea. Para estar seguro, haga clic derecho en la columna y establezca explícitamente el formato como Texto, luego guárdelo como formato de archivo Excel.
¡Abra el archivo de formato de Excel y la columna aún debería estar bien!
fuente
El Asistente de importación es la mejor solución para usuarios ocasionales y situaciones únicas. Si necesita una solución programática, puede usar el método QueryTables.Add (que es lo que el Asistente de importación está usando detrás de escena).
fuente