كيفية العمل مع OOXML التعبئة والتغليف في .NET

كيفية العمل مع OOXML التعبئة والتغليف في .NET

ملف XLSX هو أرشيف ZIP من اتفاقية التغليف المفتوحة (OPC). Aspose.Cells FOSS for .NET يعرض هيكل الحزم الأساسي عبر PackageModel, PackagePartDescriptor, IPackageReader,، و IPackageWriter.هذه هي واجهات برمجة التطبيقات على مستوى البنية التحتية مفيدة في المقام الأول للتشخيص وتطبيعات تخزين مخصصة. dotnet add package Aspose.Cells_FOSS.

خطوة بخطوة دليل

الخطوة 1: قم بتثبيت الحزمة

dotnet add package Aspose.Cells_FOSS

الخطوة 2: استيراد اسم الفضاء

using Aspose.Cells_FOSS;

الخطوة 3: التعامل مع الخزانةStructureاستثناء

PackageStructureException يتم إلقاءها عندما يكون حزمة XLSX لديها هيكل OPC غير صحيح (على سبيل المثال ، تفتقد العلاقات المطلوبة). امسك بها إلى جانب. WorkbookLoadException عند تحميل الملفات من مصادر غير موثوقة.

using Aspose.Cells_FOSS;

var opts = new LoadOptions { TryRepairPackage = true };

try
{
    var wb = new Workbook("suspect.xlsx", opts);
    Console.WriteLine("Loaded: " + wb.Worksheets.Count + " sheet(s)");
}
catch (PackageStructureException ex)
{
    Console.WriteLine("OPC structure invalid: " + ex.Message);
}
catch (WorkbookLoadException ex)
{
    Console.WriteLine("Load error: " + ex.Message);
}

الخطوة 4: فهم IPackageReader و IPacketWriter

IPackageReader يحدد a Read() طريقة قراءة حزمة OPC؛; IPackageWriter يحدد a Write() طريقة لكتابة واحد. توفر المكتبة تطبيقات مدعومة بـ ZIP الافتراضية. يمكن تقديم التطبيعات المخصصة عند تحميل أو حفظها إلى مخزن غير نظام ملفات (على سبيل المثال ، الكتل السحابية أو العواد في الذاكرة).

// Signature reference
// public interface IPackageReader { void Read(/* ... */); }
// public interface IPackageWriter { void Write(/* ... */); }
//
// Standard usage: pass a Stream to the Workbook constructor
using Aspose.Cells_FOSS;
using System.IO;

byte[] fileBytes = File.ReadAllBytes("data.xlsx");
using var ms = new MemoryStream(fileBytes);
var wb = new Workbook(ms);
Console.WriteLine("Loaded from stream: " + wb.Worksheets.Count + " sheet(s)");

الخطوة 5: تحقق من الأجزاء غير المدعومة

عند تحميل ملف XLSX،, PackageModel.UnsupportedParts يُدرج الأجزاء التي لا تقوم المكتبة بمعالجةها. يتم الحفاظ عليها ولكن لا تفسيرها . Access PackageLoadContext خلال تدفق الحمل المخصص لفحص النموذج.

// PackageModel is populated internally during Workbook construction.
// Use LoadDiagnostics to detect load-time structural warnings without
// dropping to the PackageModel level directly.
using Aspose.Cells_FOSS;

var opts = new LoadOptions { TryRepairPackage = true, TryRepairXml = true };
var wb = new Workbook("file.xlsx", opts);
var diag = wb.LoadDiagnostics;
if (diag.HasRepairs)
    Console.WriteLine("Package had " + diag.Issues.Count() + " repair entries.");

مشكلات و تصحيحات مشتركة

PackageStructureException يُلقي حتى مع TryRepairPackage = true. بعض الأخطاء الهيكلية في OPC لا يمكن إصلاحها تلقائياً (مثل نقش النوع المحتوى المفقود تمامًا). تحقق من أن الملف ZIP صالح مع unzip -t file.xlsx.إذا كان صحيحًا، فقد يكون مشفرا الملفات المحمية بكلمة المرور غير مدعومة.

Workbook لكن بعض المحتوى مفقود. التحقق LoadDiagnostics.Issues لـ: DataLossRisk = true هذه تُشير إلى أجزاء سقطت أثناء الإصلاح.

الجمركية IPackageReader لا يُدعى. تأكد من استخدام الإفراط في الحمل المكون الذي يقبل القارئ المخصص. ليس كل Workbook الإفراط في تحميل البناة يقبل قراءة الحزم المخصصة.

الأسئلة المتكررة

متى يجب أن أطبق IPackageReader أو IPacketWriter؟?

فقط عندما لا يكون النسخة الاحتياطية للتخزين هو نظام الملفات المحلي - على سبيل المثال، تحميل مباشرة من تدفق التخزن السحابي دون إنشاء ملف مؤقت.

هل يتم حفظ الأجزاء غير المدعومة في PackageModel على النزول؟?

قطع غير قياسية في UnsupportedParts لا يضمن أن يتم إعادة كتابته. للحصول على الوفاء في رحلة ذهاب وآخر من الأجزاء غير القياسية ، بعد المعالجة XLSX المحفوظة على مستوى ZIP.

ما الفرق بين PackageStructureException و WorkbookLoadExcept؟?

PackageStructureException هو فشل مستوى OPC/ZIP (نوع المحتوى المفقود، العلاقة المعطلة). WorkbookLoadException هو فشل مستوى أعلى في تحليل محتوى XLSX XML.

انظر أيضا

 العربية