Работа с OOXML Packaging

Работа с OOXML Packaging

Файл XLSX представляет собой ZIP-архив с открытой пакетной конвенцией (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 Внутреннее заполнение при загрузке файла XLSX. Прямая инстанция не является частью стандартного рабочего процесса высокого уровня.


IPакетчики и IPаккайтписыватели

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 прямо.

Неподдерживаемые части сохранены на сбережении?

Части, перечисленные в PackageModel.UnsupportedParts Если для нестандартных деталей требуется верность на обратном пути, используйте послеобрабатывающий этап с застежкой.

В чем разница между PackageStructureException и WorkbookLoadExcept?

PackageStructureException указывает на сбой уровня OPC/ZIP (отсутствие типа контента, нарушение связи). WorkbookLoadException указывает на ошибку анализа или семантическую неисправность в контенте XLSX более высокого уровня.


Справочное резюме API

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