JSON 数据转换为 Excel 电子表格是报告或分析结构化信息时的常见需求。 Aspose.Words Cloud SDK for Java 提供了强大的基于云的 API,简化了在 Java 应用程序中的此转换。在本指南中,我们将演示如何 在 Java 中将 JSON 转换为 XLSX,包括完整的代码示例、使用 cURL 的等效 REST 调用以及关键的最佳实践建议。完成后,您将能够从任何 JSON 源生成 XLSX 文件,并轻松处理嵌套结构。

使用 Java 从 JSON 生成 XLSX - 完整代码示例

本示例演示如何读取 JSON 文件,构建一个 DOCX 表格,并使用 Aspose.Words Cloud SDK for Java 将其转换为 XLSX。

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);
        }
    }
}

注意: 此代码示例演示了核心功能。在将其用于项目之前,请确保更新所有文件路径和配置值以匹配实际环境,验证已正确安装所有必需的依赖项,并在开发环境中进行彻底测试。如果遇到任何问题,请参阅官方文档或联系支持团队获取帮助。

使用 cURL 通过 REST API 将 JSON 转换为 XLSX

相同的转换可以在不编写 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,其中每个 cell 接收对应值的字符串表示。
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 for 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 账户,包含客户端 ID 和客户端密钥。
  • api.aspose.cloud 的网络访问。

通过设置 clientIdclientSecret 变量来配置 SDK,如代码示例所示。

结论

在 Java 中将 JSON 转换为 XLSX 变得简单,只需使用 Aspose.Words Cloud SDK for Java。提供的示例引导您读取 JSON、构建 DOCX 表格并将其转换为 XLSX 工作簿,同时 cURL 部分展示了语言无关的替代方案。请记得为生产环境获取合适的许可证;您可以在产品页面查看定价,并从临时许可证页面获取临时许可证。拥有这些工具后,您可以快速可靠地从任何 JSON 源自动生成 Excel 报表。

常见问题

如何在 Java 中使用 Aspose.Words Cloud SDK for Java 将 JSON 转换为 XLSX?
使用上面的代码示例或 REST API。SDK 读取 JSON,创建 DOCX 表格,然后通过单个 API 调用将其转换为 XLSX。

SDK 能处理嵌套的 JSON 结构吗?
是的。 将嵌套对象展平为单独的列后再插入行,如 “Practical Tips” 部分所示。

我需要在生产部署中使用许可证吗?
生产环境需要有效的许可证。购买选项列在产品页面上,临时许可证可用于测试,详见临时许可证页面

有没有办法在不编写 Java 代码的情况下执行转换?
当然。cURL 示例展示了如何通过 REST API 实现相同的结果,该 API 可以从任何平台调用。

阅读更多