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