Convertidor de Excel a JSON
Sube un archivo Excel para convertir datos de hoja de cálculo a formato JSON
Arrastra el archivo Excel aquí, o haz clic para seleccionar
¿Qué es Excel a JSON?
Excel a JSON es una herramienta en línea de conversión de formato de datos que convierte datos de hojas de cálculo de Microsoft Excel (.xlsx/.xls) a formato JSON (Notación de Objetos JavaScript).
Excel es el software de hojas de cálculo más popular del mundo, ampliamente utilizado para almacenamiento de datos, análisis y generación de informes. JSON es el formato de intercambio de datos más utilizado en aplicaciones web modernas y APIs, conocido por su estructura clara y fácil análisis.
Con esta herramienta, puedes convertir rápidamente datos de hojas de cálculo de Excel en matrices JSON para usar en programación, análisis de datos y desarrollo web. Todo el procesamiento se realiza localmente en tu navegador, garantizando la seguridad de los datos.
Cómo usar
Cómo usar
- Haz clic en el área de carga o arrastra y suelta un archivo Excel (compatible con formatos .xlsx y .xls).
- Si hay varias hojas, selecciona la que deseas convertir en el menú desplegable.
- Elige si deseas usar la primera fila como nombres de campo de objetos JSON.
- Los datos JSON formateados se generarán automáticamente, listos para copiar.
Notas sobre hojas de cálculo
- Verifica la hoja seleccionada, la fila de encabezado, las celdas combinadas, las filas vacías y los formatos de fecha antes de usar el JSON.
- Las hojas de cálculo suelen mezclar el formato de visualización con los valores en bruto, así que comprueba los números y las fechas después de la conversión.
Casos de uso
Principio técnico
Los libros de trabajo .xlsx modernos son archivos SpreadsheetML definidos por ECMA-376 / ISO/IEC 29500 (el estándar Office Open XML): la extensión .xlsx es un contenedor ZIP cuyas entradas son documentos XML bajo xl/worksheets/sheetN.xml, con cadenas almacenadas en una tabla de cadenas compartidas xl/sharedStrings.xml y tipos de celda declarados por el atributo t (s = sharedString, n = número, b = booleano, str = cadena en línea, d = fecha en ISO 8601). La página lee el archivo subido con FileReader.readAsArrayBuffer y luego pasa el ArrayBuffer a SheetJS (xlsx). XLSX.read(buffer, {type: 'array'}) devuelve un objeto de libro de trabajo cuyo array SheetNames impulsa el selector de hojas, y XLSX.utils.sheet_to_json(sheet, options) recorre la cuadrícula de celdas para producir un array de objetos (con la fila de encabezado como claves) o un array de arrays cuando se pasa header: 1. El formato legacy .xls es el formato binario BIFF8 (Excel 97-2003), que SheetJS también decodifica a través del mismo punto de entrada read() pero con type: 'binary' para FileReader.readAsBinaryString o 'array' cuando se lee como bytes. Los valores de fecha de celda en ambos formatos se almacenan como números de serie (días desde la época de 1900 en Excel, con el error histórico de año bisiesto 1900-02-29 que desplaza las fechas anteriores a 1900-03-01 un día, o días desde 1904-01-01 cuando el indicador date1904 del libro está activado en Excel para Mac). La conversión a un Date de JavaScript es (serie - 25569) * 86400 * 1000 milisegundos después de la época Unix para el sistema 1900 una vez tenido en cuenta el error de año bisiesto. Las fórmulas residen en el atributo f y SheetJS reporta su último resultado cacheado en v; si el libro fue guardado por una herramienta que no recalculó (por ejemplo, algunas exportaciones mediante script), v puede estar ausente o desactualizado. Cuando la primera fila se usa como encabezado, las celdas de encabezado duplicadas o vacías fuerzan a SheetJS a omitir o renombrar automáticamente las claves (por ejemplo, __EMPTY, __EMPTY_1), lo que rompe los contratos JSON posteriores. Los rangos de celdas combinadas (declarados en worksheet/mergeCells) exponen el valor solo en el ancla superior izquierda y emiten undefined en las celdas de cola combinadas, por lo que una fila de título combinada produce un registro poblado seguido de N - 1 registros dispersos. Para libros de trabajo de decenas de megabytes, la ruta síncrona XLSX.read() puede bloquear el hilo de UI; la alternativa de streaming es mover el análisis a un Web Worker para que el hilo principal se mantenga reactivo.
- .xlsx es un contenedor ZIP de XML (ECMA-376 / ISO/IEC 29500); .xls es el formato binario BIFF8; SheetJS XLSX.read(buffer, {type: 'array'}) maneja ambos mediante FileReader.readAsArrayBuffer.
- Opciones de sheet_to_json: header: 1 devuelve array de arrays; header: 'A' usa las letras de columnas de la hoja; defval: null rellena celdas dispersas con null en lugar de eliminar la clave; raw: false aplica el formato de visualización de Excel.
- El número de serie de fecha Excel es días desde 1900-01-01 (con el error de año bisiesto 1900-02-29; para el sistema de fechas Mac 1904, días desde 1904-01-01); ms de JS Date = (serie - 25569) * 86400000 después de la época Unix.
- Las celdas de encabezado duplicadas o vacías se convierten en claves renombradas automáticamente (__EMPTY, __EMPTY_1) o colisionan silenciosamente; valida el JSON buscando estas cadenas antes de confiar en el esquema.
- Los rangos de celdas combinadas (worksheet.mergeCells) exponen el valor solo en el ancla superior izquierda; las celdas de cola en la combinación son undefined, por lo que una fila de título combinada produce un registro con el valor y N-1 registros con campos vacíos.
- Las celdas de fórmula almacenan la expresión en f y el último resultado cacheado en v; las herramientas que guardan sin recalcular dejan v desactualizado o ausente, y SheetJS devuelve v tal cual.
- Mueve XLSX.read a un Web Worker para libros de trabajo de más de ~10 MB; la ruta de análisis síncrona bloquea requestAnimationFrame y puede congelar la pestaña durante varios segundos en hojas grandes.
Ejemplos
Hoja de empleados a array de objetos JSON
Filas Excel (hoja Staff):
id | name | dept | salary
1 | Alice | Engineering| 8500
2 | Bob | Sales | 6200
Salida JSON:
[
{ "id": 1, "name": "Alice", "dept": "Engineering", "salary": 8500 },
{ "id": 2, "name": "Bob", "dept": "Sales", "salary": 6200 }
]Libro con varias hojas (orders.xlsx)
Hojas del libro: ["Customers", "Orders", "Products"]
Seleccionar hoja: Orders
Primera fila usada como encabezados: order_id, customer_id, total, date
Resultado: 1.284 filas convertidas en objetos JSON
Las celdas vacías al final se convierten en null, no en cadena vacíaCelda de fecha de Excel a cadena ISO 8601
Celda A2 (formateada como Date en Excel): 46173 (número de serie de Excel)
Mostrado en Excel: 2026-06-01
Salida JSON:
{ "order_date": "2026-06-01T00:00:00.000Z" }
Nota: Excel almacena fechas como números de serie; esta herramienta las normaliza a cadenas ISOEncabezados con espacios y caracteres chinos
Fila de encabezados: "Order No." | "客户姓名" | "金额 (USD)"
Las claves JSON se conservan literalmente:
{
"Order No.": "A-1024",
"客户姓名": "王小明",
"金额 (USD)": 199.50
}Preguntas frecuentes
¿Se sube mi archivo de Excel?
No. El archivo .xlsx, .xls o .csv se procesa en tu navegador con SheetJS. Los bytes nunca salen del dispositivo. Puedes confirmarlo en la pestaña Red mientras cargas un archivo.
¿Qué características de Excel sobreviven a la conversión?
Los valores de celda, las fechas (como cadenas ISO o números de serie de Excel según la opción), los números, los booleanos y el texto. Los gráficos, imágenes, formato condicional, fórmulas (se mantiene el valor cacheado, no la fórmula), comentarios y celdas combinadas se descartan o se simplifican.
¿Se convierten todas las hojas?
Solo se convierte la hoja seleccionada. Usa el desplegable de hojas para elegir cuál exportar. Si necesitas varias, conviértelas una por una.
¿Cómo se mapean las cabeceras y las filas a JSON?
Si activas 'primera fila como cabecera', el resultado es un array de objetos donde las celdas de cabecera son las claves. Si lo desactivas, será un array de arrays con los valores de las celdas. Las celdas vacías se convierten en null en la salida.
¿Cómo se gestionan las fechas?
Excel guarda las fechas como números de serie (días desde 1900). La página los convierte por defecto en cadenas ISO 8601 (2026-06-13). Cambia a 'raw' para conservar el número de serie, lo cual es útil si vas a reimportar a Excel después. Las celdas con solo hora se convierten en cadenas como 'T14:30:00'.
¿Y las fórmulas?
Las fórmulas no se evalúan; solo se usa el último valor calculado guardado por Excel. Si necesitas resultados frescos, abre el archivo en Excel, recalcula (F9), guarda y vuelve a subirlo.
¿Cuál es el límite de tamaño?
Lo limita la memoria del navegador. Los equipos de escritorio modernos manejan libros de hasta varios cientos de MB. Para archivos muy grandes (> 1 millón de filas), usa una herramienta de escritorio (pandas en Python, Power Query de Excel): el navegador se quedará sin memoria.