Modern APIs ve web hizmetleri ile çalışırken, geliştiriciler genellikle derinlemesine yırtılmış aralar ve nesneler ile karmaşık JSON yapıları ile karşılaşırlar. bu hiyerarşik verileri düz Excel tablolarına dönüştürmek önemli bir meydan okuma sunar. Bu kılavuz Aspose.Cells için .NET kullanılarak etkili bir şekilde yıkanmış jSON araları Excel’e nasıl dönüştüreceğini gösterir.

Giriş

Modern APIs ve web hizmetleri ile çalışırken, geliştiriciler genellikle derinlemesine yırtılmış aralar ve nesneler ile karmaşık JSON yapıları ile karşılaşırlar. bu hiyerarşik verileri düz Excel tablolarına dönüştürmek önemli bir meydan okuma sunar. Bu kılavuz Aspose.Cells için .NET kullanılarak etkili bir şekilde yıkanmış jSON araları Excel’e nasıl dönüştüreceğini gösterir.

The Challenge: Kompleks Nested JSON yapıları

Bir web API’den bu tipik JSON cevabını göz önünde bulundurun:

Bu ırkçı verileri düz bir Excel tablosuna dönüştürmek birkaç zorluk yaratır:

  • Çeşitli göğüsler ile nasıl başa çıkılır (bölümler, çalışanlar, beceriler)
  • Ebeveyn ve çocuğun eşyaları arasındaki ilişkiyi nasıl koruyabiliriz
  • Nasıl okunabilir bir spreadsheet yapısı oluşturmak

adım adım çözüm

Adım 1: Aspose.Cells yükleme

Öncelikle .NET için Aspose.Cells yükleme:

dotnet add package Aspose.Cells

Adım 2: JsonLayoutOptions ayarlayın

Doğru şekilde yapılandırılmış JsonLayoutOptions Array ile başa çıkmak için:

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;

Adım 3: Kompleks JSON verileri yükleme

Karmaşık Nested JSON verilerinizi yükleyin:

// 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];

Adım 4: Gelişmiş Flattening ayarlayın

Gelişmiş çamurlu yapılar için, özelleştirilmiş bir çamur çözümü uygulanır:

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

Adım 5: Çok düzeyde Nested Arrays ile uğraşmak

Karmaşık çok seviyeli aralar için, ek işleme ihtiyacımız var:

// 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++;
//     }
// }

Adım 6: Profesyonel biçimlendirme uygulaması

Doğru biçimlendirme ile okunabilirliği arttırın:

// 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();

Adım 7: Sonuçları Kurtar

Çalışma kitabını çamurlu verilerle ihraç edin:

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

Aspose.cells ile basitleştirilmiş bir çözüm

Birçok senaryo için Aspose.Cells, yerleşik JSON işlemini kullanarak daha basit bir yaklaşım sağlar:

// 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");

Anahtar Bilgiler ve En İyi Uygulamalar

  • Use ArrayAsTable = true - Bu arrayların doğru temsil edilmesi için gereklidir
  • Karmaşık hiyerarşik veriler için çok sayıda çalışma sayfası oluşturmayı düşünün
  • Formatı uygulayın çıkışını daha okunabilir hale getirmek için
  • NestedArrayAsTable kullanın = gerçek daha iyi yapıların işlenmesi için mevcut olduğunda
  • Çok karmaşık yapılar için, ithalat öncesi JSON’u önceden işlemeyi düşünün.

Yaygın Sorunlar ve Çözümler

KonuÇözüm
Tırnaklar tek hücreler olarak görünüyorYetenek ArrayAsTable ve NestedArrayAsTable Seçenekler
veri ilişkileri kaybolduİlişkiler sütunları ile birden fazla tablo / tablo oluşturun
Sütun adları yanlışKullanmak için DateTimeGroupSeparator Adlandırmayı özelleştirme seçeneği
Büyük dosyalarla hafıza sorunlarıJSON’u parçalar halinde işleme veya akış yaklaşımlarını kullanın

More in this category