Transformar datos JSON en una hoja de cálculo de Excel es una necesidad frecuente al crear informes o analizar información estructurada. Aspose.Words Cloud SDK for Java ofrece una potente API basada en la nube que simplifica esta conversión en aplicaciones Java. En esta guía recorreremos cómo convertir JSON a XLSX en Java, cubriendo un ejemplo de código completo, las llamadas REST equivalentes con cURL y recomendaciones esenciales de buenas prácticas. Al final podrás generar archivos XLSX a partir de cualquier fuente JSON y manejar estructuras anidadas con facilidad.

Generar XLSX a partir de JSON usando Java - Ejemplo de código completo

Este ejemplo muestra cómo leer un archivo JSON, crear una tabla DOCX y convertirla a XLSX usando Aspose.Words Cloud SDK for Java.

import com.aspose.words.cloud.*;
import com.aspose.words.cloud.model.*;
import com.aspose.words.cloud.api.*;
import com.aspose.words.cloud.auth.*;
import com.fasterxml.jackson.databind.*;
import java.io.*;
import java.util.*;

public class JsonToXlsxConverter {
    public static void main(String[] args) throws Exception {
        // Initialize API
        String clientId = "YOUR_CLIENT_ID";
        String clientSecret = "YOUR_CLIENT_SECRET";
        WordsApi wordsApi = new WordsApi(clientId, clientSecret);
        
        // Paths
        String jsonPath = "data.json";
        String tempDocxPath = "temp.docx";
        String outputXlsxPath = "output.xlsx";
        
        // Read JSON
        ObjectMapper mapper = new ObjectMapper();
        List<Map<String, Object>> records = mapper.readValue(new File(jsonPath),
                mapper.getTypeFactory().constructCollectionType(List.class, Map.class));
        
        // Define column order (keys from first record)
        List<String> columns = new ArrayList<>(records.get(0).keySet());
        
        // Create empty DOCX in cloud
        CreateDocumentRequest createRequest = new CreateDocumentRequest("temp.docx");
        wordsApi.createDocument(createRequest);
        
        // Build table rows
        TableRowInsert requestRow = new TableRowInsert();
        // First row - header
        TableRow headerRow = new TableRow();
        List<TableCell> headerCells = new ArrayList<>();
        for (String col : columns) {
            TableCell cell = new TableCell();
            cell.setText(col);
            headerCells.add(cell);
        }
        headerRow.setTableCellList(headerCells);
        // Insert header row at position 0
        InsertTableRowRequest insertHeader = new InsertTableRowRequest("temp.docx", 0, headerRow);
        wordsApi.insertTableRow(insertHeader);
        
        // Insert data rows
        int rowIndex = 1;
        for (Map<String, Object> rec : records) {
            TableRow dataRow = new TableRow();
            List<TableCell> dataCells = new ArrayList<>();
            for (String col : columns) {
                TableCell cell = new TableCell();
                cell.setText(String.valueOf(rec.get(col)));
                dataCells.add(cell);
            }
            dataRow.setTableCellList(dataCells);
            InsertTableRowRequest insertRow = new InsertTableRowRequest("temp.docx", rowIndex, dataRow);
            wordsApi.insertTableRow(insertRow);
            rowIndex++;
        }
        
        // Convert DOCX to XLSX
        ConvertDocumentRequest convertRequest = new ConvertDocumentRequest("temp.docx", "xlsx");
        byte[] xlsxBytes = wordsApi.convertDocument(convertRequest);
        try (FileOutputStream fos = new FileOutputStream(outputXlsxPath)) {
            fos.write(xlsxBytes);
        }
    }
}

Nota: Este ejemplo de código demuestra la funcionalidad principal. Antes de usarlo en su proyecto, asegúrese de actualizar cualquier ruta de archivo y valores de configuración para que coincidan con su entorno real, verifique que todas las dependencias requeridas estén correctamente instaladas y realice pruebas exhaustivas en su entorno de desarrollo. Si encuentra algún problema, consulte la documentación oficial o póngase en contacto con el equipo de soporte para obtener ayuda.

Conversión de JSON a XLSX mediante API REST usando cURL

La misma conversión se puede realizar sin escribir código Java llamando directamente a la Aspose.Words Cloud REST API.

  1. Obtener un token de acceso - la API utiliza OAuth 2.0.
curl -X POST "https://api.aspose.cloud/connect/token" \
     -H "Content-Type: application/x-www-form-urlencoded" \
     -d "grant_type=client_credentials&client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET"
  1. Cargar el archivo JSON (la API espera una fuente DOCX, así que primero subimos un DOCX de marcador de posición).
curl -X PUT "https://api.aspose.cloud/v4.0/words/temp.docx" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -H "Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document" \
     --data-binary "@temp.docx"
  1. Crear una tabla a partir de JSON - este paso lo maneja el SDK en el código; con la API REST, deberías subir un DOCX pre‑llenado que ya contiene la tabla.

  2. Convertir el DOCX a XLSX

curl -X GET "https://api.aspose.cloud/v4.0/words/temp.docx?format=xlsx" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -o output.xlsx

Para obtener una lista completa de los parámetros, consulte la documentación oficial de la API.

Convertir JSON a XLSX en Java - Cómo funciona el código

A continuación se muestra un desglose conciso de las secciones clave en el ejemplo de Java.

  1. Inicialización de la API - WordsApi wordsApi = new WordsApi(clientId, clientSecret); crea un cliente autenticado.
WordsApi wordsApi = new WordsApi(clientId, clientSecret);
  1. Lectura de JSON - ObjectMapper deserializa el archivo JSON en una lista de mapas, preservando el orden original de los campos.
ObjectMapper mapper = new ObjectMapper();
List<Map<String, Object>> records = mapper.readValue(
        new File(jsonPath),
        mapper.getTypeFactory().constructCollectionType(List.class, Map.class));
  1. Crear un DOCX en la nube - CreateDocumentRequest crea un DOCX vacío que alojará la tabla.
CreateDocumentRequest createRequest = new CreateDocumentRequest("temp.docx");
wordsApi.createDocument(createRequest);
  1. Construyendo la fila de encabezado - Las claves del primer registro definen el orden de las columnas, y cada clave se convierte en una celda de encabezado.
TableRow headerRow = new TableRow();
List<TableCell> headerCells = new ArrayList<>();
for (String col : columns) {
    TableCell cell = new TableCell();
    cell.setText(col);
    headerCells.add(cell);
}
headerRow.setTableCellList(headerCells);
InsertTableRowRequest insertHeader = new InsertTableRowRequest("temp.docx", 0, headerRow);
wordsApi.insertTableRow(insertHeader);
  1. Insertando filas de datos - Cada objeto JSON se convierte en un TableRow donde cada cell recibe la representación en cadena del valor correspondiente.
for (Map<String, Object> rec : records) {
    TableRow dataRow = new TableRow();
    List<TableCell> dataCells = new ArrayList<>();
    for (String col : columns) {
        TableCell cell = new TableCell();
        cell.setText(String.valueOf(rec.get(col)));
        dataCells.add(cell);
    }
    dataRow.setTableCellList(dataCells);
    InsertTableRowRequest insertRow = new InsertTableRowRequest("temp.docx", rowIndex, dataRow);
    wordsApi.insertTableRow(insertRow);
    rowIndex++;
}
  1. Conversión a XLSX - ConvertDocumentRequest indica al servicio que transforme el DOCX temporal en un archivo XLSX, que luego se escribe localmente.
ConvertDocumentRequest convertRequest = new ConvertDocumentRequest("temp.docx", "xlsx");
byte[] xlsxBytes = wordsApi.convertDocument(convertRequest);

Para obtener una referencia detallada de la API, visite la Aspose.Words Cloud API Reference.

Instalación y configuración Aspose.Words Cloud SDK for Java

Añade la dependencia de Maven al pom.xml de tu proyecto:

<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-words-cloud</artifactId>
    <version>26.9.0</version>
</dependency>

Descargue los últimos JARs desde la página de descarga si prefiere la instalación manual.
Requisitos:

  • Java 8 o superior.
  • Una cuenta de Aspose Cloud con ID de cliente y secreto de cliente.
  • Acceso de red a api.aspose.cloud.

Configure el SDK estableciendo las variables clientId y clientSecret como se muestra en el ejemplo de código.

Conclusión

Convertir JSON a XLSX en Java se vuelve sencillo con el Aspose.Words Cloud SDK for Java. El ejemplo proporcionado le guía a través de la lectura de JSON, la construcción de una tabla DOCX y la conversión a un libro de trabajo XLSX, mientras que la sección cURL muestra una alternativa independiente del lenguaje. Recuerde obtener una licencia adecuada para uso en producción; puede ver los precios en la página del producto y obtener una licencia temporal desde la página de licencia temporal. Con estas herramientas, puede automatizar la generación de informes de Excel a partir de cualquier fuente JSON de manera rápida y fiable.

FAQs

¿Cómo convierto JSON a XLSX en Java usando Aspose.Words Cloud SDK for Java?
Utilice el ejemplo de código anterior o la API REST. El SDK lee JSON, crea una tabla DOCX y luego la convierte a XLSX con una única llamada a la API.

¿Puede el SDK manejar estructuras JSON anidadas?
Sí. Aplana los objetos anidados en columnas separadas antes de insertar filas, como se muestra en la sección “Practical Tips”.

¿Necesito una licencia para implementaciones en producción?
Se requiere una licencia válida para producción. Las opciones de compra se enumeran en la página del producto, y una licencia temporal está disponible para pruebas en la página de licencia temporal.

¿Hay una manera de realizar la conversión sin escribir código Java?
Absolutamente. El ejemplo de cURL muestra cómo lograr el mismo resultado a través de la API REST, que se puede llamar desde cualquier plataforma.

Leer más