Sacar Datos de Hojas de Cálculo Sin Perder la Cordura
CSV, JSON, Excel: convertir entre formatos sin romper todo.
Alguien te envía un archivo Excel por email. Tu aplicación necesita JSON. Esto debería ser simple.
Nunca lo es.
La hoja de cálculo tiene celdas fusionadas. O fechas formateadas raramente. O esa columna donde alguien escribió "N/A" en lo que debería ser un campo numérico. Cada conversión se convierte en una sesión de depuración.
Así es como hacerlo menos doloroso.
CSV: El Traductor Universal
Casi todas las aplicaciones de hojas de cálculo exportan a CSV. Casi todos los sistemas pueden leer CSV. Es el mínimo común denominador de los formatos de datos.
CSV es solo texto: valores separados por comas, filas separadas por saltos de línea.
nombre,email,edad
Juan,juan@ejemplo.com,32
Juana,juana@ejemplo.com,28
Simple. Hasta que no lo es.
El problema de la coma. ¿Qué pasa si un valor contiene una coma? "Pérez, Juan" como nombre rompe el análisis. Solución: envolver valores entre comillas. Las buenas herramientas CSV manejan esto automáticamente. Las malas no.
El problema del salto de línea. ¿Qué pasa si un valor contiene un salto de línea? Misma solución: comillas. Misma advertencia: no todas las herramientas lo manejan.
El problema de codificación. Excel en Windows por defecto usa una codificación de caracteres diferente a Excel en Mac. Los caracteres especiales se corrompen. Exporta como "CSV UTF-8" cuando sea posible.
JSON: Lo que las APIs Realmente Quieren
Las aplicaciones web prefieren JSON:
[
{"nombre": "Juan", "email": "juan@ejemplo.com", "edad": 32},
{"nombre": "Juana", "email": "juana@ejemplo.com", "edad": 28}
]
Convertir de CSV a JSON usualmente es sencillo. La primera fila se convierte en nombres de propiedades, las filas siguientes se convierten en objetos.
Surgen problemas cuando:
Los tipos se pierden. CSV es todo cadenas de texto. "32" podría ser un número o texto. La conversión JSON tiene que adivinar. La mayoría de herramientas asumen: parece un número, probablemente es un número.
Los nulos son ambiguos. ¿Celda vacía = null? ¿Cadena vacía? ¿Omitir la propiedad completamente? Diferentes herramientas deciden diferente.
Los arrays no existen. CSV es plano. Si tu JSON necesita arrays anidados, harás trabajo manual.
Flujo de Trabajo Común
- Exporta desde Excel/Sheets como CSV
- Abre en un editor de texto, verifica problemas obvios
- Convierte a JSON
- Valida la estructura JSON
- Verifica detalladamente algunos registros
La verificación detallada importa. La conversión automatizada puede corromper datos silenciosamente. Una fecha se convierte en número. Un código postal pierde su cero inicial. "O'Brien" se convierte en "O'Brien". Verifica antes de confiar.
Manejando Datos Raros
Fechas. Excel almacena fechas como números internamente. La exportación puede producir "44927" en lugar de "2023-01-15". Conoce tu formato de fecha antes de convertir.
Números como texto. Códigos postales, números de teléfono, IDs: estos parecen números pero no deberían tratarse como números. Los ceros iniciales importan. Convierte a cadena explícitamente.
Unicode. Nombres con acentos, datos en escrituras no latinas. Asegúrate de que tu pipeline maneje UTF-8 de principio a fin.
Yendo en la Otra Dirección
JSON a CSV pierde información. Los objetos anidados se aplanan torpemente. Los arrays se convierten en... ¿qué, exactamente? ¿Múltiples filas? ¿Cadenas concatenadas?
Para JSON plano con estructura consistente, la conversión funciona bien. Para datos anidados complejos, estás tomando decisiones sobre cómo aplanarlo. Documenta esas decisiones.
YAML y XML
YAML es el primo hipster de JSON. Más legible, misma estructura de datos, fácil de convertir entre ellos.
XML es la versión empresarial. Verboso, ampliamente soportado por sistemas antiguos, requiere más esfuerzo de análisis.
Ambos convierten a JSON y viceversa. El principal dolor de cabeza son los atributos vs elementos en XML: JSON no tiene esa distinción.
La conversión de datos se trata de saber qué puede salir mal y verificarlo. Automatiza la conversión, verifica los resultados y nunca confíes en que "simplemente funciona".