การทํางานกับ OOXML Packaging

การทํางานกับ OOXML Packaging

การทํางานกับ OOXML Packaging

ไฟล์ XLSX เป็นอาร์คิเวอร์ ZIP ของ Open Packaging Convention (OPC) Aspose.Cells FOSS สําหรับ .NET เปิดเผยชั้นแพ็คเกจที่อยู่เบื้องหลังผ่านการใช้งานของระบบ APK และ OPC ในรูปแบบนี้ IPackageReader, IPackageWriter, และการ PackageModel object graph. เหล่านี้เป็น APIs ระดับต่ํา สําหรับการวินิจฉัยและเครื่องมือ แอพลิเคชั่นส่วนใหญ่ใช้เพียงระดับสูงเท่านั้น Workbook ช่วงเรียน.


แบบแพคเกจ

PackageModel ตัวแทนของสาระทางลักษณะของอาร์คิฟ XLSX มันเปิดเผยสามชุด: Parts (ส่วนของเนื้อหาทั้งหมด), Relationships (รายการความสัมพันธ์ของ OPC) และ UnsupportedParts (ส่วนที่อยู่ในไฟล์ ที่ห้องสมุดไม่ประมวลผล) ส่วนแต่ละชิ้นถูกอธิบายโดยตัวเลขการแสดงข้อมูลของคอมพิวเตอร์ PackagePartDescriptor มี PartUri, ContentType,และ Category.

using Aspose.Cells_FOSS;

// PackageModel is accessed via PackageLoadContext during custom load flows
// The following illustrates the object structure
// var context = new PackageLoadContext(workbook, packageModel);
// var model = context.Package;
// foreach (var part in model.Parts)
// {
//     Console.WriteLine($"URI={part.PartUri}, Type={part.ContentType}");
// }
// Console.WriteLine("Unsupported parts: " + model.UnsupportedParts.Count);

Note: PackageModel เป็นตัวอย่างภายในเมื่อโหลดไฟล์ XLSX. การนํามาใช้โดยตรงไม่ใช่ส่วนหนึ่งของกระบวนการทํางานระดับสูงแบบสแตนเดอร์ด์.


IPpackageReader และ IPackagewriter

IPackageReader กําหนดตัวอย่างเดียว Read() วิธีการอ่าน OPC แพ็คเกจ. IPackageWriter กําหนดตัวอย่างเดียว Write() วิธีการเขียนตัวหนึ่ง. ช่องทางนี้ถูกนําไปใช้โดยเครื่องอ่าน / เขียนแบบ ZIP ของห้องสมุดภายในและสามารถจัดหาได้ด้วยการดําเนินงานที่กําหนดเองสําหรับสถานการณ์ในการเก็บรักษาความจําหรือเมฆ.

// Signature reference — not a complete runnable example
// public interface IPackageReader { void Read(...); }
// public interface IPackageWriter { void Write(...); }

PackageStructureException

PackageStructureException การโยนเมื่อโครงสร้าง XLSX package เป็นที่ไม่ถูกต้องอย่างแท้จริง เช่น เมื่อความสัมพันธ์ OPC ที่จําเป็นขาดไป มันขยายระดับการยกเว้นทั่วไป และมีข้อความอธิบายว่าอินวารียันโควิดของโผงกรรมใด ถูกละเมิด.

using Aspose.Cells_FOSS;

var opts = new LoadOptions { TryRepairPackage = true };

try
{
    var wb = new Workbook("bad.xlsx", opts);
}
catch (PackageStructureException ex)
{
    Console.WriteLine("OPC structure error: " + ex.Message);
}
catch (WorkbookLoadException ex)
{
    Console.WriteLine("Load error: " + ex.Message);
}

เคล็ดลับและปฏิบัติที่ดีที่สุด

  • การใช้งาน PackageModel.UnsupportedParts เพื่อค้นหาชิ้นส่วนที่ไม่เป็นมาตรฐาน ที่อาจถูกทิ้งไปอย่างเงียบๆ ในการเดินทางกลับ.
  • Catch PackageStructureException นอกจากนี้ WorkbookLoadException เมื่อโหลดไฟล์จากแหล่งที่ไม่น่าเชื่อถือ.
  • การ IPackageReader/IPackageWriter ระหว่างทางเป็นจุดขยาย; ใช้มันเพียงเมื่อคุณต้องการการเก็บรักษาที่พิเศษ (เช่น การโหลดจากบล็อบเมฆโดยไม่มีไฟล์ท้องถิ่น).
  • สําหรับการวินิจฉัยส่วนใหญ่, LoadDiagnostics (สามารถเข้าถึงได้ผ่านทาง Workbook.LoadDiagnostics) เพียงพอ การลดลงสู่ชั้นบรรจุเป็นเรื่องยากที่จะจําเป็น.

ปัญหาทั่วไป

IssueCauseแก้ไข
PackageStructureException ในภาระความสัมพันธ์ OPC ที่ต้องมีหายไปเซ็ต TryRepairPackage = true ใน LoadOptions; ตรวจสอบ LoadDiagnostics.Issues หลังจากการบรรทุก
UnsupportedParts ไม่ว่างเปล่าไฟล์มีขยายที่ไม่เป็นมาตรฐานส่วนเหล่านี้ถูกรักษาไว้โดยตรง โดยไม่ใช่อาหารถ้ามันมีตัวตนในการบรรทุก
Custom IPackageReader ไม่เรียกส่งไปยังการใช้งานที่ผิดของคอนสตรั๊กเตอร์การรับรองการ LoadOptions หรือการใช้งานโครงสร้างที่รับรองความอ่อนแอของตัวอ่านแบบพิเศษ

FAQ

ผมจําเป็นต้องใช้ IPackageReader/IPackerWriter สําหรับงานตารางกระดาษปกติหรือไม่?

ไม่.อินเตอร์เฟสเหล่านี้เป็นจุดขยายสําหรับฉากที่พัฒนา ทุกการทํางานอ่าน / เขียนมาตรฐานผ่าน Workbook โดยตรง.

ส่วนที่ไม่สนับสนุนถูกรักษาไว้ใน Save ไหม?

ส่วนที่ระบุใน PackageModel.UnsupportedParts ไม่ผ่านการประมวลผลและอาจไม่ได้ถูกเขียนกลับ หากความซื่อสัตย์ในการเดินทางไป-กลับไปสําหรับชิ้นส่วนที่ไม่ใช่มาตรฐาน ใช้ขั้นตอนหลังการแปรรูปแบบระดับ Zip.

ความแตกต่างระหว่าง PackageStructureException และ WorkbookLoadExcept คืออะไร?

PackageStructureException แสดงถึงความผิดพลาดในระดับ OPC/ZIP (ประเภทเนื้อหาที่ขาด, ความสัมพันธ์แตก). WorkbookLoadException แสดงถึงความผิดพลาดในการพาร์สหรือการแสดงคําในระดับสูงกว่า ในเนื้อหา XLSX.


คําอธิบายการพบบ่อย API

คลาส / อินเตอร์เฟซDescription
IPackageReaderอินเตอร์เฟสสําหรับการอ่านแพ็คเกจ OPC (Read วิธีการ)
IPackageWriterอินเตอร์เฟสสําหรับการเขียนแพ็คเกจ OPC (Write วิธีการ)
PackageLoadContextการผูกพัน a Workbook ลงใน PackageModel
PackageLoadContext.Packageกลับตัวเลข PackageModel
PackageModel.Partsส่วนของสารทั้งหมดในแพ็คเกจ
PackageModel.Relationshipsการเข้าประวัติความสัมพันธ์ของ OPC
PackageModel.UnsupportedPartsส่วนที่ไม่ได้รับการประมวลผลโดยห้องสมุด
PackagePartDescriptor.PartUriURI ของ OPC สําหรับชิ้นส่วน
PackagePartDescriptor.ContentTypeประเภทของ MIME ของส่วน
PackagePartDescriptor.Categoryประเภททางลักษณะ (ตารางงาน, สไตล์ ฯลฯ)
PackageStructureExceptionโดนการละเมิดโครงสร้างของ OPC

See Also

 ภาษาไทย