Преобразование данных JSON в таблицу Excel часто требуется при составлении отчетов или анализе структурированной информации. Aspose.Words Cloud SDK for Java предоставляет мощный облачный API, упрощающий эту конверсию в Java‑приложениях. В этом руководстве мы пошагово рассмотрим, как конвертировать JSON в XLSX на Java, включая полный пример кода, эквивалентные REST‑запросы с cURL и важные рекомендации по лучшим практикам. К концу вы сможете генерировать файлы XLSX из любого источника JSON и легко обрабатывать вложенные структуры.

Создание XLSX из JSON с использованием Java — полный пример кода

Этот пример демонстрирует, как прочитать файл JSON, построить таблицу DOCX и преобразовать её в XLSX с помощью 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);
        }
    }
}

Примечание: Этот пример кода демонстрирует базовый функционал. Прежде чем использовать его в вашем проекте, убедитесь, что обновили все пути к файлам и значения конфигурации в соответствии с вашей реальной средой, проверьте, что все необходимые зависимости правильно установлены, и тщательно протестируйте в вашей среде разработки. Если вы столкнётесь с какими‑либо проблемами, обратитесь к официальной документации или свяжитесь с службой поддержки для получения помощи.

Преобразование JSON в XLSX через REST API с использованием cURL

Тот же процесс конвертации можно выполнить без написания кода на Java, вызвав напрямую Aspose.Words Cloud REST API.

  1. Получить токен доступа - API использует 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. Загрузите JSON‑файл (API ожидает источник DOCX, поэтому сначала загружаем заглушку DOCX).
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. Создать таблицу из JSON - этот шаг обрабатывается SDK в коде; при работе с REST API вам нужно загрузить предварительно заполненный DOCX, который уже содержит таблицу.

  2. Конвертировать DOCX в XLSX.

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

Для полного списка параметров см. официальную документацию API.

Преобразование JSON в XLSX в Java - как работает код

Ниже приведено краткое описание ключевых разделов в примере на Java.

  1. Инициализация API - WordsApi wordsApi = new WordsApi(clientId, clientSecret); создает аутентифицированный клиент.
WordsApi wordsApi = new WordsApi(clientId, clientSecret);
  1. Чтение JSONObjectMapper десериализует JSON‑файл в список карт, сохраняя исходный порядок полей.
ObjectMapper mapper = new ObjectMapper();
List<Map<String, Object>> records = mapper.readValue(
        new File(jsonPath),
        mapper.getTypeFactory().constructCollectionType(List.class, Map.class));
  1. Создание DOCX в облаке - CreateDocumentRequest создает пустой DOCX, который будет содержать таблицу.
CreateDocumentRequest createRequest = new CreateDocumentRequest("temp.docx");
wordsApi.createDocument(createRequest);
  1. Создание строки заголовка – Ключи первой записи определяют порядок столбцов, и каждый ключ становится ячейкой заголовка.
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. Вставка строк данных – Каждый объект JSON преобразуется в TableRow, где каждая ячейка получает строковое представление соответствующего значения.
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. Преобразование в XLSX - ConvertDocumentRequest сообщает сервису преобразовать временный DOCX в файл XLSX, который затем записывается локально.
ConvertDocumentRequest convertRequest = new ConvertDocumentRequest("temp.docx", "xlsx");
byte[] xlsxBytes = wordsApi.convertDocument(convertRequest);

Для получения подробной справки по API, посетите Aspose.Words Cloud API Reference.

Установка и настройка Aspose.Words Cloud SDK для Java

Добавьте зависимость Maven в файл pom.xml вашего проекта:

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

Скачайте последние JAR‑файлы со страницы загрузки, если предпочитаете ручную установку.
Требования:

  • Java 8 или выше.
  • Учётная запись Aspose Cloud с идентификатором клиента и секретом клиента.
  • Сетевой доступ к api.aspose.cloud.

Настройте SDK, установив переменные clientId и clientSecret, как показано в примере кода.

Заключение

Преобразование JSON в XLSX в Java становится простым с помощью Aspose.Words Cloud SDK for Java. Приведённый пример пошагово показывает, как читать JSON, создавать таблицу DOCX и преобразовывать её в рабочую книгу XLSX, а раздел cURL демонстрирует независимую от языка альтернативу. Не забудьте получить надлежащую лицензию для использования в продакшене; цены можно посмотреть на странице продукта, а временную лицензию получить со страницы временной лицензии. С этими инструментами вы сможете быстро и надёжно автоматизировать создание Excel‑отчётов из любого источника JSON.

FAQs

Как я могу конвертировать JSON в XLSX на Java с использованием Aspose.Words Cloud SDK for Java?
Используйте приведенный выше пример кода или REST API. SDK читает JSON, создает таблицу DOCX, а затем преобразует её в XLSX одним вызовом API.

Может ли SDK обрабатывать вложенные структуры JSON?
Да. Преобразуйте вложенные объекты в отдельные столбцы перед вставкой строк, как показано в разделе “Практические советы”.

Нужна ли лицензия для развертывания в продакшн?
Для продакшн требуется действительная лицензия. Варианты покупки перечислены на странице продукта, а временная лицензия доступна для тестирования на странице временной лицензии.

Есть ли способ выполнить конвертацию без написания кода на Java?
Конечно. Пример cURL показывает, как достичь того же результата через REST API, который можно вызвать с любой платформы.

Читать далее