Apabila bekerja dengan APIs moden dan perkhidmatan web, pemaju sering bertemu struktur JSON yang kompleks dengan array dan objek yang tertanam secara mendalam.Mengubah data hierarki ini ke dalam jadual Excel rata mewakili cabaran yang besar.Panduan ini menunjukkan bagaimana untuk secara berkesan menukar Array-array JSon tertakam kepada Excel menggunakan Aspose.Cells untuk .NET .

Introduction

Apabila bekerja dengan APIs moden dan perkhidmatan web, pemaju sering bertemu struktur JSON yang kompleks dengan array dan objek yang tertanam secara mendalam.Mengubah data hierarki ini ke dalam jadual Excel rata mewakili cabaran yang besar.Panduan ini menunjukkan bagaimana untuk secara berkesan menukar Array-array JSon tertakam kepada Excel menggunakan Aspose.Cells untuk .NET .

Tantangan: Struktur kompleks Nested JSON

Pertimbangkan tindak balas JSON tipikal ini daripada API web:

Menukar data hierarki ini kepada jadual Excel rata mewujudkan beberapa cabaran:

  • Bagaimanakah untuk mengendalikan pelbagai kerikil ( jabatan, pekerja, kemahiran)
  • Bagaimana untuk mengekalkan hubungan antara ibu bapa dan item kanak-kanak
  • Bagaimana untuk mencipta struktur spreadsheet yang boleh dibaca

Penyelesaian Langkah-Langkah

Langkah 1: Instal Aspose.Cells

Pertama, anda perlu memasang Aspose.Cells untuk .NET:

dotnet add package Aspose.Cells

Langkah 2: Menetapkan JsonLayoutOptions

Mencipta konfigurasi yang betul JsonLayoutOptions untuk mengendalikan array:

using Aspose.Cells;
using Aspose.Cells.Utility;
// Create JsonLayoutOptions with array handling
JsonLayoutOptions options = new JsonLayoutOptions();
options.ArrayAsTable = true;  // Crucial for proper flattening
options.ConvertNumericOrDate = true;
options.IgnoreNull = true;

Langkah 3: muat data kompleks JSON

Muat turun data JSON yang kompleks anda:

// Sample JSON with nested arrays
string jsonData = File.ReadAllText("complex_data.json");
// Initialize workbook and worksheet
Workbook workbook = new Workbook();
Worksheet worksheet = workbook.Worksheets[0];

Langkah 4: Mengesetkan Flattening Lanjutan

Untuk struktur yang canggih, melaksanakan penyelesaian flattening tersuai:

// Define starting cell position
int startRow = 0;
int startColumn = 0;
// Import the JSON data with our configured options
JsonUtility.ImportData(jsonData, worksheet.Cells, startRow, startColumn, options);

Langkah 5: Mengendalikan Multi-level Nested Arrays

Untuk array pelbagai peringkat yang kompleks, kami memerlukan pemprosesan tambahan:

// Create a second worksheet for detailed employee data
Worksheet employeeSheet = workbook.Worksheets.Add("Employees");
int empRow = 0;
// Add headers for the employee sheet
string[] headers = { "Department", "Employee ID", "Employee Name", "Skills" };
for (int i = 0; i < headers.Length; i++)
{
    employeeSheet.Cells[empRow, i].PutValue(headers[i]);
}
empRow++;
// Parse JSON to extract and flatten employee data
// Note: This would require a JSON parsing library like Newtonsoft.Json
// JObject root = JObject.Parse(jsonData);
// foreach (var dept in root["departments"])
// {
//     string deptName = dept["name"].ToString();
//     foreach (var emp in dept["employees"])
//     {
//         employeeSheet.Cells[empRow, 0].PutValue(deptName);
//         employeeSheet.Cells[empRow, 1].PutValue((int)emp["id"]);
//         employeeSheet.Cells[empRow, 2].PutValue(emp["name"].ToString());
//         employeeSheet.Cells[empRow, 3].PutValue(string.Join(", ", emp["skills"].ToObject<string[]>()));
//         empRow++;
//     }
// }

Langkah 6: Menggunakan Formatting Profesional

Meningkatkan kebolehbacaan dengan pemformatan yang betul:

// Format both worksheets as tables with headers
worksheet.ListObjects.Add(0, 0, worksheet.Cells.LastCell.Row, worksheet.Cells.LastCell.Column, true);
employeeSheet.ListObjects.Add(0, 0, empRow - 1, 3, true);
// Auto-fit columns for better readability
worksheet.AutoFitColumns();
employeeSheet.AutoFitColumns();

Langkah 7: Menyelamatkan hasil

Mengeksport buku kerja dengan data berlapis:

// Save as Excel file
workbook.Save("flattened_data.xlsx");

Penyelesaian mudah menggunakan Aspose.Cells

Untuk banyak senario, Aspose.Cells menyediakan pendekatan yang lebih mudah menggunakan pemprosesan JSON terbina dalam:

// Initialize workbook
Workbook workbook = new Workbook();
Worksheet sheet = workbook.Worksheets[0];
// Configure JSON import options
JsonLayoutOptions options = new JsonLayoutOptions
{
    ArrayAsTable = true,
    ConvertNumericOrDate = true,
    IgnoreNull = true,
    TitleStyle = new CellsFactory().CreateStyle(),
    NestedArrayAsTable = true  // Important for nested arrays
};
// Set title style for better readability
options.TitleStyle.Font.IsBold = true;
// Import JSON
JsonUtility.ImportData(jsonData, sheet.Cells, 0, 0, options);
// Save result
workbook.Save("flattened_output.xlsx");

Pengetahuan utama dan amalan terbaik

  • Use ArrayAsTable = true - Ini penting untuk perwakilan array yang betul
  • Pertimbangkan untuk mencipta pelbagai lembaran kerja untuk data hierarki yang kompleks
  • Menggunakan format untuk membuat output lebih boleh dibaca
  • Menggunakan NestedArrayAsTable = benar apabila tersedia untuk pengendalian struktur nested yang lebih baik
  • Untuk struktur yang sangat rumit , pertimbangkan untuk memproses JSON sebelum pengimportan

Masalah dan Penyelesaian Bersama

IssueSolution
Array Nested muncul sebagai sel tunggalEnable ArrayAsTable dan NestedArrayAsTable Pilihan
Hubungan data hilangMencipta pelbagai jadual/lapisan dengan lajur hubungan
Nama lajur tidak betulGunakan yang DateTimeGroupSeparator Pilihan untuk menyesuaikan nama
Masalah memori dengan fail besarMemproses JSON dalam kepingan atau menggunakan pendekatan streaming

More in this category