Перетворення даних 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. Читання JSON - ObjectMapper десеріалізує файл 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.

Питання та відповіді

Як конвертувати JSON у XLSX у Java за допомогою Aspose.Words Cloud SDK for Java?
Використовуйте наведений вище приклад коду або REST API. SDK читає JSON, створює таблицю DOCX, а потім конвертує її у XLSX одним викликом API.

Чи може SDK обробляти вкладені структури JSON?
Так. Сплюсніть вкладені об’єкти в окремі стовпці перед вставкою рядків, як продемонстровано у розділі «Практичні поради».

Чи потрібна ліцензія для виробничих розгортань?
Для виробництва потрібна дійсна ліцензія. Варіанти придбання вказані на сторінці продукту, а тимчасова ліцензія доступна для тестування на сторінці тимчасової ліцензії.

Чи є спосіб виконати конвертацію без написання коду Java?
Звичайно. Приклад cURL показує, як досягти того ж результату за допомогою REST API, який можна викликати з будь-якої платформи.

Читати далі