العمل مع OOXML التعبئة والتغليف
العمل مع OOXML التعبئة والتغليف
ملف XLSX هو ملفات Open Packaging Convention (OPC) ZIP. Aspose.Cells FOSS for .NET يعرض الطبقة الخزينة الأساسية من خلال IPackageReader, IPackageWriter,و و هو PackageModel هذه هي 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);ملاحظة:
PackageModelيتم تسجيل الدخول داخلية عند تحميل ملف XLSX. لا تشكل التحكم المباشر جزءًا من تدفق العمل عالي المستوى القياسي.
IPackageReader و 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 غير صالحة بشكل أساسي - على سبيل المثال ، عندما تفتقر العلاقات المطلوبة مع 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اكتشاف أجزاء غير قياسية يمكن أن تكون هادئة على الطريق المستدير. - القبض
PackageStructureExceptionوبالإضافة إلىWorkbookLoadExceptionعند تحميل الملفات من مصادر غير موثوق بها. - وَالْمُتَّقِينَ
IPackageReader/IPackageWriterواجهات هي نقاط التمديد؛ لا تنفذها إلا عندما تحتاج إلى تخزين مخصص (على سبيل المثال، تحميل من مجلد سحابي دون ملف محلي). - ومعظم المشاكل التشخيصية،,
LoadDiagnostics(متاحة من خلالWorkbook.LoadDiagnostics) كافية - نادرا ما يكون من الضروري الانزلاق إلى طبقة الحزمة.
القضايا المشتركة
| مسألة | سبب | تصحيح |
|---|---|---|
PackageStructureException على تحميل | العلاقة بين أوبك المفقودة | مجموعة TryRepairPackage = true في LoadOptions;· التحقق LoadDiagnostics.Issues بعد تحميل |
UnsupportedParts لا فارغة | ملف يحتوي على إضافات غير قياسية | هذه الأجزاء محمية في الحفظ إذا كانت موجودة عند التحميل. |
Custom IPackageReader لا يُدعى | انتقل إلى المعدن الخاطئ | تأكد من أن LoadOptions أو التحميل المفرط المستخدم الذي يقبل القارئ المخصص |
FAQ
هل أحتاج إلى استخدام IPackageReader/IPackagesWriter للعمل العادي في ورقة الشاشة؟?
لا هذه الواجهات هي نقاط التمديد للمشاهد المتقدمة.تتم جميع عمليات القراءة/الكتابة القياسية من خلال Workbook مباشرة .
هل يتم حفظ الأجزاء غير المساعدة؟?
الأجزاء المذكورة في PackageModel.UnsupportedParts لا يتم معالجة ولا يمكن إعادة كتابة.إذا كانت الإخلاص الدائري للأجزاء غير القياسية مطلوبة، استخدم خطوة ما بعد المعالجات على مستوى zip.
ما الفرق بين PackageStructureException و WorkbookLoadExcept؟?
PackageStructureException يشير إلى فشل على مستوى OPC / ZIP (فقدان نوع المحتوى ، العلاقة المكسورة). WorkbookLoadException يشير إلى نجاح أعلى مستوى أو فشل شيماتي في محتوى XLSX.
إشارة API
| الفئة / الوسائط | وصف |
|---|---|
IPackageReader | قراءة مقطع فيديو (Read طريقة ) |
IPackageWriter | - إعداد برنامج التداول (Write طريقة ) |
PackageLoadContext | يربط A Workbook إلى أن ي PackageModel |
PackageLoadContext.Package | يعود إلى PackageModel |
PackageModel.Parts | جميع أجزاء المحتوى في الحزمة |
PackageModel.Relationships | إدخال العلاقات OPC |
PackageModel.UnsupportedParts | الأجزاء غير المعالجة من قبل المكتبة |
PackagePartDescriptor.PartUri | أوبك يوري للجزء |
PackagePartDescriptor.ContentType | نوع المحتوى MIME من الجزء |
PackagePartDescriptor.Category | الفئة المنطقية (الرسوم العملية، الأنماط، الخ) |
PackageStructureException | تراجع في الاعتبار انتهاكات الهيكلية لـ OPC |