Работа с OOXML Packaging

Работа с OOXML Packaging

XLSX файлът е ZIP архив на Open Packaging Convention (OPC). Aspose.Cells FOSS за .NET разкрива базовия пакет чрез: IPackageReader, IPackageWriter, и на PackageModel Това са API на ниско ниво, предназначени за диагностика и инструменти повечето приложения използват само високо равнище. Workbook - Да, в клас.


Модел на опаковката

PackageModel представлява логическото съдържание на XLSX архив. Той излага три колекции: Parts (всички части на съдържанието), Relationships (вписвания във връзка с ОПК) и 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 Direct Instancialization не е част от стандартния работен поток на високо ниво.


IPackageReader и IPackeWriter

IPackageReader Определя единствено: Read() метод за четене на опаковка с ОПК. 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 не е празен.Файлът съдържа нестандартни разширения.Тези части се съхраняват буквално, освен ако са били налице при натоварване.
За митнически цели IPackageReader Не се използваПрехвърлено на грешна конструкторска претоварване.Осигуряване на: LoadOptions или конструктор претоварване приемане на персонализирания читател се използва

FAQ

Трябва ли да използвам IPackageReader/IPackerWriter за нормална работа с електронни таблици?

Не, тези интерфейси са точки за разширение на напреднали сценарии. Workbook - Не, не. Направо.

Неподдържани ли са частите на Save?

Части, изброени в: PackageModel.UnsupportedParts Ако се изисква верност на пътуването за нестандартни части, използвайте стъпка по-нататъшна обработка на ниво zip.

Каква е разликата между PackageStructureException и WorkbookLoadExcept?

PackageStructureException показва провал на ниво OPC/ZIP ( липсва тип съдържание, нарушена връзка). WorkbookLoadException показва парас на по-високо ниво или семантичен провал в съдържанието XLSX.


Снимка на API референтна информация

Класа / интерфейсОписание на състоянието
IPackageReaderИнтерфейс за четене на пакет от ОПК (Read метод)
IPackageWriterИнтерфейс за писане на пакет от ОПК (Write метод)
PackageLoadContextСвързващ а Workbook към неговия PackageModel
PackageLoadContext.PackageВръща се: PackageModel
PackageModel.PartsВсички части на съдържанието в опаковката
PackageModel.RelationshipsВписвания във връзка с ОПК
PackageModel.UnsupportedPartsЧасти, които не са обработени от библиотеката
PackagePartDescriptor.PartUriURI на ОПК за частта
PackagePartDescriptor.ContentTypeТип на съдържание MIME на частта
PackagePartDescriptor.CategoryЛогична категория (работен лист, стилове и др.)
PackageStructureExceptionОплакване на структурни нарушения по OPC
 Български