Работа с 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);Забележка::
PackageModelDirect 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.PartUri | URI на ОПК за частта |
PackagePartDescriptor.ContentType | Тип на съдържание MIME на частта |
PackagePartDescriptor.Category | Логична категория (работен лист, стилове и др.) |
PackageStructureException | Оплакване на структурни нарушения по OPC |