microsoft-excel – ¿Cómo puedo evitar que Excel se coma mis deliciosos archivos CSV y excrete datos inútiles?

Pregunta:

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 también funciona perfectamente.

Cuando se abre en un editor de texto como el Bloc de notas 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 es:

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 habrá observado, los números de serie están entre comillas dobles. Excel no parece respetar los calificadores de texto en archivos .csv. Al importar estos archivos a Access, no tenemos ninguna dificultad. 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, aburrido. Hay esperanza? ¿Hay algún ajuste que no haya podido encontrar? Este parece ser el caso de Excel 2003, 2007 y 2010.

Respuesta:

Pero Excel, sin falta, convierte estos archivos en basura inútil.

Excel es basura inútil.

Solución

Me sorprendería un poco si algún cliente que quisiera sus datos en formato Excel no pudiera cambiar el formato visible en esas tres columnas a "Número" con cero lugares decimales o "texto". Pero supongamos que un breve documento de instrucciones está fuera de discusión.

Tus opciones son:

  1. Agregue un carácter no numérico, no de espacio en blanco a sus números de serie.
  2. Escriba un archivo xls o un archivo xlsx con algún formato predeterminado.
  3. Haga trampa y genere esos números como fórmulas ="268435459705526269","",="268435459705526269" (también puede hacer ="268435459705526269",,="268435459705526269" ahorrándose 2 caracteres). Esto tiene la ventaja de mostrarse correctamente, y probablemente sea útil en general, 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 si fueran de escape. Eso significa que ="abc,xyz" abarcará dos columnas y romperá la importación.

Usar el formato "=""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.

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım