เมื่อทํางานกับ APIs และบริการเว็บที่ทันสมัยนักพัฒนามักจะพบกับโครงสร้าง JSON ที่ซับซ้อนที่มีแร่และวัตถุที่คล้ายคลึงกันอย่างลึก การแปลงข้อมูลยิเรกิกเหล่านี้เป็นตาราง Excel แสดงความท้าทายที่สําคัญ คู่มือนี้แสดงให้เห็นว่าวิธีการแปลงแกล่ JSon ที่คลื่นได้อย่างมีประสิทธิภาพไปยัง Excel โดยใช้ Aspose.Cells สําหรับ .NET
บทนํา
เมื่อทํางานกับ APIs และบริการเว็บที่ทันสมัยนักพัฒนามักจะพบกับโครงสร้าง JSON ที่ซับซ้อนที่มีแร่และวัตถุที่คล้ายคลึงกันอย่างลึก การแปลงข้อมูลยิเรกิกเหล่านี้เป็นตาราง Excel แสดงความท้าทายที่สําคัญ คู่มือนี้แสดงให้เห็นว่าวิธีการแปลงแกล่ JSon ที่คลื่นได้อย่างมีประสิทธิภาพไปยัง Excel โดยใช้ Aspose.Cells สําหรับ .NET
ความท้าทาย: โครงสร้าง JSON ที่ซับซ้อน
พิจารณาการตอบสนอง JSON ประเภทนี้จากเว็บ API:
การแปลงข้อมูลยิเรกิกนี้เป็นตาราง Excel แผ่นสร้างความท้าทายหลายอย่าง:
- วิธีการจัดการแร่หลายแบบ (หน่วยงานพนักงานทักษะ)
- วิธีการรักษาความสัมพันธ์ระหว่างพ่อแม่และเด็กรายการ
- วิธีการสร้างโครงสร้างแผ่น spreadsheet ที่สามารถอ่านได้
ขั้นตอนการแก้ปัญหา
ขั้นตอน 1: ติดตั้ง Aspose.Cells
ก่อนอื่นติดตั้ง Aspose.Cells สําหรับ .NET:
dotnet add package Aspose.Cells
ขั้นตอน 2: ติดตั้ง JsonLayoutOptions
สร้างการกําหนดค่าที่เหมาะสม JsonLayoutOptions
สําหรับการจัดการ 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;
ขั้นตอนที่ 3: ดาวน์โหลดข้อมูล JSON Complex
ดาวน์โหลดข้อมูล JSON แบบซับซ้อนของคุณ:
// 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];
ขั้นตอนที่ 4: การตั้งค่า Flattening Advanced
สําหรับโครงสร้างเคลือบขั้นสูงใช้โซลูชันการเคลือบแบบกําหนดเอง:
// 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);
ขั้นตอนที่ 5: การจัดการสายพานหลายระดับ
สําหรับแร่หลายระดับที่ซับซ้อนเราต้องการการประมวลผลเพิ่มเติม:
// 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++;
// }
// }
ขั้นตอนที่ 6: ใช้รูปแบบมืออาชีพ
เพิ่มความสามารถในการอ่านด้วยรูปแบบที่เหมาะสม:
// 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();
ขั้นตอน 7: เก็บผล
Export the workbook with flattened ข้อมูล:
// Save as Excel file
workbook.Save("flattened_data.xlsx");
การแก้ปัญหาที่เรียบง่ายโดยใช้ Aspose.Cells
สําหรับสถานการณ์จํานวนมาก Aspose.Cells ให้วิธีการที่เรียบง่ายขึ้นโดยใช้การจัดการ JSON ในตัว:
// 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");
ความเข้าใจหลักและการปฏิบัติที่ดีที่สุด
- ใช้ ArrayAsTable = จริง - นี่เป็นสิ่งสําคัญสําหรับการแสดงผลที่เหมาะสมของแร่
- พิจารณาการสร้างแผ่นงานหลายแบบ สําหรับข้อมูลยิเรกิกที่ซับซ้อน
- แอปพลิเคชันการจัดรูปแบบ เพื่อให้การส่งออกสามารถอ่านได้มากขึ้น
- ใช้ NestedArrayAsTable = จริง เมื่อพร้อมใช้งานสําหรับการจัดการที่ดีกว่าของโครงสร้าง Nested
- สําหรับโครงสร้างที่ซับซ้อนมาก โปรดพิจารณาการประมวลผล JSON ก่อนที่จะนําเข้า
ปัญหาทั่วไปและวิธีแก้ไข
ปัญหา | โซลูชั่น |
---|---|
เหล็กหล่อปรากฏเป็นเซลล์เดียว | อนุญาต ArrayAsTable และ NestedArrayAsTable ตัวเลือก |
การเชื่อมต่อข้อมูลที่สูญเสีย | สร้างตาราง/ตารางหลายแบบพร้อมคอลัมน์ความสัมพันธ์ |
ชื่อคอลัมน์ไม่ถูกต้อง | ใช้ DateTimeGroupSeparator ตัวเลือกในการปรับแต่งชื่อ |
ปัญหาหน่วยความจํากับไฟล์ขนาดใหญ่ | การประมวลผล JSON ในชิ้นส่วนหรือใช้วิธีการ streaming |