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