Робота з 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);

Note: PackageModel безпосередня інстанціація не є частиною стандартного робочого потоку високого рівня.


IPpackageReader і IPackagewriter

IPackageReader визначає єдиний Read() метод читання пакети OPC. IPackageWriter визначає єдиний Write() Ці інтерфейси реалізуються внутрішнім читачем/писателем бібліотеки на основі ZIP і можуть бути поставлені за допомогою індивідуальних впроваджень для сценаріїв зберігання в пам’яті або хмарі.

// Signature reference — not a complete runnable example
// public interface IPackageReader { void Read(...); }
// public interface IPackageWriter { void Write(...); }

PackageStructureException

PackageStructureException Розширюється загальна ієрархія винятків та несе повідомлення, що описує, який структурний інваріант був порушений.

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 щоб виявити нестандартні частини, які можуть бути мовчки скинуті на поїздці в ту та іншу сторону.
  • Catch PackageStructureException Крім того, WorkbookLoadException при завантаженні файлів з ненадійних джерел.
  • У. IPackageReader/IPackageWriter інтерфейси є точками розширення; реалізуйте їх тільки тоді, коли вам потрібно індивідуальне зберігання (наприклад, завантаження з облачного блобу без локального файлу).
  • Для більшості діагностики, LoadDiagnostics (доступний через: Workbook.LoadDiagnosticsрідко необхідно скинути до пакетної частини.

Загальні питання

IssueCauseВиправлення
PackageStructureException на завантаженніНедостатнє ОПК-сувісностіНабір TryRepairPackage = true в LoadOptions; перевірка LoadDiagnostics.Issues після завантаження
UnsupportedParts не порожнійФайл містить нестандартні розширенняЦі частини зберігаються буквально на , якщо вони були присутні при завантаженні.
Custom IPackageReader не викликаноПередано неправильному конструктору перевантаження.Забезпечити, що LoadOptions або конструктор перевантаження приймаючи індивідуальний читач використовується

FAQ

Чи потрібно використовувати IPackageReader/IPackswriter для звичайного роботи з таблицями?

Ні. Ці інтерфейси є точками розширення для передових сценаріїв. Всі стандартні операції читання/запису проходять через Workbook прямо.

Непідтримувані частини збережені на захищенні?

Частини, перераховані в PackageModel.UnsupportedParts Якщо для нестандартних деталей потрібна верність в дорозі і по доросі, використовуйте крок після обробки на рівні закладки.

У чому різниця між PackageStructureException і WorkbookLoadExcept?

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


Реферат на API

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

See Also

 Українська