將 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 來執行。
- 取得存取令牌 - 此 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"
- 上傳 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"
-
從 JSON 建立表格 - 這一步由 SDK 在程式碼中處理;若使用 REST API,則需要上傳已預先填入表格的 DOCX。
-
將 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 文件。
在 Java 中將 JSON 轉換為 XLSX - 程式碼工作原理
以下是 Java 示例中關鍵部分的簡要說明。
- API 初始化 -
WordsApi wordsApi = new WordsApi(clientId, clientSecret);建立已驗證的客戶端。
WordsApi wordsApi = new WordsApi(clientId, clientSecret);
- 讀取 JSON -
ObjectMapper反序列化 JSON 檔案為一個 map 列表,保留原始欄位順序。
ObjectMapper mapper = new ObjectMapper();
List<Map<String, Object>> records = mapper.readValue(
new File(jsonPath),
mapper.getTypeFactory().constructCollectionType(List.class, Map.class));
- 在雲端建立 DOCX -
CreateDocumentRequest建立一個空的 DOCX,該文件將用於容納表格。
CreateDocumentRequest createRequest = new CreateDocumentRequest("temp.docx");
wordsApi.createDocument(createRequest);
- 建立標題列 - 第一筆記錄的鍵定義欄位順序,且每個鍵都會成為標題儲存格。
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);
- 插入資料列 - 每個 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++;
}
- 轉換為 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 或更高版本。
- 具有客戶端 ID 和客戶端密鑰的 Aspose Cloud 帳戶。
- 對
api.aspose.cloud的網路存取。
如程式碼範例所示,透過設定 clientId 和 clientSecret 變數來配置 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 結構嗎?
是的。將嵌套的物件展平為獨立的欄位,然後再插入行,如 “實用技巧” 部分所示。
我需要在生產部署中取得授權嗎?
生產環境需要有效的授權。購買選項列於產品頁面,並且可在臨時授權頁面取得測試用的臨時授權。
是否有辦法在不編寫 Java 程式碼的情況下執行轉換?
當然可以。cURL 範例展示了如何透過 REST API 獲得相同的結果,該 API 可從任何平台調用。