כיצד ליישר מערך JSON להמרה ל-Excel עם C#

כיצד ליישר מערך JSON להמרה ל-Excel עם C#

כאשר עובדים עם APIs מודרניים ושירותי אינטרנט, מפתחים נתקלים לעיתים קרובות במבני JSON מורכבים עם מערכים ואובייקטים מקוננים לעמק. המרה של מבנים היררכיים אלה לטבלאות Excel שטוחות מציבה אתגר משמעותי. מדריך זה מדגים כיצד להמיר ביעילות מערכי JSON מקוננים ל-Excel באמצעות Aspose.Cells for .NET.

האתגר: מבני JSON מקוננים מורכבים

שקול את תגובת ה-JSON הטיפוסית הזו מ-API אינטרנטי:

{
  "company": "Acme Corp",
  "departments": [
    {
      "name": "Engineering",
      "employees": [
        {
          "id": 101,
          "name": "John Smith",
          "skills": ["C#", "ASP.NET", "Azure"]
        },
        {
          "id": 102,
          "name": "Jane Doe",
          "skills": ["JavaScript", "React", "Node.js"]
        }
      ]
    },
    {
      "name": "Marketing",
      "employees": [
        {
          "id": 201,
          "name": "Michael Johnson",
          "skills": ["Content Strategy", "SEO", "Analytics"]
        }
      ]
    }
  ]
}

המרת נתונים היררכיים אלה לטבלת Excel שטוחה יוצרת מספר אתגרים:

  • כיצד להתמודד עם מספר מערכים מקוננים (מחלקות, עובדים, מיומנויות)
  • כיצד לשמור על הקשרים בין פריטים הורים לילדים
  • כיצד ליצור מבנה גיליון קריא

פתרון שלב אחר שלב

שלב 1: התקנת Aspose.Cells

ראשית, התקן את Aspose.Cells for .NET:

dotnet add package Aspose.Cells

שלב 2: הגדרת JsonLayoutOptions

צור JsonLayoutOptions מוגדרות כראוי כדי להתמודד עם מערכים:

using Aspose.Cells;
using Aspose.Cells.Utility;

// צור JsonLayoutOptions עם טיפול במערכים
JsonLayoutOptions options = new JsonLayoutOptions();
options.ArrayAsTable = true;  // קריטי להשטחה נכונה
options.ConvertNumericOrDate = true;
options.IgnoreNull = true;

שלב 3: טען נתוני JSON מורכבים

טען את נתוני ה-JSON המורכבים שלך:

// דוגמת JSON עם מערכים מקוננים
string jsonData = File.ReadAllText("complex_data.json");

// אתחל את חוברת העבודה ואת גיליון העבודה
Workbook workbook = new Workbook();
Worksheet worksheet = workbook.Worksheets[0];

שלב 4: הגדר השטחה מתקדמת

למבנים מקוננים מתקדמים, יישם פתרון השטחה מותאם אישית:

// הגדר את מיקום התא ההתחלתי
int startRow = 0;
int startColumn = 0;

// ייבא את נתוני ה-JSON עם האפשרויות שהגדרנו
JsonUtility.ImportData(jsonData, worksheet.Cells, startRow, startColumn, options);

שלב 5: טיפול במערכים מקוננים ברמות מרובות

למערכים מורכבים ברמות מרובות, אנו זקוקים לעיבוד נוסף:

// צור גיליון עבודה שני עבור נתוני עובדים מפורטים
Worksheet employeeSheet = workbook.Worksheets.Add("Employees");
int empRow = 0;

// הוסף כותרות לגיליון העובדים
string[] headers = { "Department", "Employee ID", "Employee Name", "Skills" };
for (int i = 0; i < headers.Length; i++)
{
    employeeSheet.Cells[empRow, i].PutValue(headers[i]);
}
empRow++;

// נתח את ה-JSON כדי לחלץ ולהשטיח את נתוני העובדים
// הערה: זה ידרוש ספריית ניתוח JSON כמו 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++;
//     }
// }

שלב 6: החל על פורמט מקצועי

שפר את הקריאות עם פורמט נכון:

// פורמט את שני גיליונות העבודה כטבלאות עם כותרות
worksheet.ListObjects.Add(0, 0, worksheet.Cells.LastCell.Row, worksheet.Cells.LastCell.Column, true);
employeeSheet.ListObjects.Add(0, 0, empRow - 1, 3, true);

// התאם את העמודות לגובה אוטומטי כדי לשפר את הקריאות
worksheet.AutoFitColumns();
employeeSheet.AutoFitColumns();

שלב 7: שמור את התוצאה

ייצא את חוברת העבודה עם נתונים שהושטחו:

// שמור כקובץ Excel
workbook.Save("flattened_data.xlsx");

פתרון מפושט באמצעות Aspose.Cells

לרבים מהתסריטים, Aspose.Cells מספקת גישה פשוטה יותר באמצעות טיפול JSON המובנה שלה:

// אתחל את חוברת העבודה
Workbook workbook = new Workbook();
Worksheet sheet = workbook.Worksheets[0];

// הגדר אפשרויות ייבוא JSON
JsonLayoutOptions options = new JsonLayoutOptions
{
    ArrayAsTable = true,
    ConvertNumericOrDate = true,
    IgnoreNull = true,
    TitleStyle = new CellsFactory().CreateStyle(),
    NestedArrayAsTable = true  // חשוב עבור מערכים מקוננים
};

// הגדר סגנון כותרת לשיפור הקריאות
options.TitleStyle.Font.IsBold = true;

// ייבא JSON
JsonUtility.ImportData(jsonData, sheet.Cells, 0, 0, options);

// שמור את התוצאה
workbook.Save("flattened_output.xlsx");

תובנות והמלצות חשובות

  1. השתמש ב-ArrayAsTable = true - זה חיוני לייצוג נכון של מערכים
  2. שקול ליצור גיליונות עבודה מרובים עבור נתונים היררכיים מורכבים
  3. החל פורמט כדי להפוך את הפלט לקריא יותר
  4. השתמש ב-NestedArrayAsTable = true כאשר זה זמין לטיפול טוב יותר במבנים מקוננים
  5. למבנים מורכבים במיוחד, שקול לעבד את ה-JSON לפני הייבוא

בעיות נפוצות ופתרונות

בעיהפתרון
מערכים מקוננים מופיעים כתאים בודדיםהפעל את אפשרויות ArrayAsTable ו-NestedArrayAsTable
קשרי נתונים אובדיםצור טבלאות/גיליונות מרובים עם עמודות קשר
שמות העמודות אינם נכוניםהשתמש באפשרות DateTimeGroupSeparator כדי להתאים אישית את השמות
בעיות זיכרון עם קבצים גדוליםעבד את ה-JSON בחתיכות או השתמש בגישות סטרימינג
 Ελληνικά