Як працювати з OOXML Packaging в .NET
Файл XLSX є ZIP-архівом з відкритої пакетної конвенції (OPC). Aspose.Cells FOSS для .NET викриває базову структуру пакета через: PackageModel, PackagePartDescriptor, IPackageReader, і IPackageWriter. Це API на рівні інфраструктури, корисні в першу чергу для діагностики та індивідуальних реалізацій зберігання. dotnet add package Aspose.Cells_FOSS.
Крок за кроком посібник
Крок 1: Налаштування пакету
dotnet add package Aspose.Cells_FOSSКрок 2: імпортні імена
using Aspose.Cells_FOSS;Крок 3: Управління пакетомStructureException
PackageStructureException викидається, коли пакет XLSX має недійсну структуру OPC (наприклад, відсутність необхідних відносин). WorkbookLoadException при завантаженні файлів з ненадійних джерел.
using Aspose.Cells_FOSS;
var opts = new LoadOptions { TryRepairPackage = true };
try
{
var wb = new Workbook("suspect.xlsx", opts);
Console.WriteLine("Loaded: " + wb.Worksheets.Count + " sheet(s)");
}
catch (PackageStructureException ex)
{
Console.WriteLine("OPC structure invalid: " + ex.Message);
}
catch (WorkbookLoadException ex)
{
Console.WriteLine("Load error: " + ex.Message);
}Крок 4: Розуміння IPackageReader і IPackeWriter
IPackageReader визначає а Read() метод читання пакета ОПК; IPackageWriter визначає а Write() Метод написання одного. Бібліотека забезпечує умовні реалізації з підтримкою ZIP. Запропоновані реалізации можуть бути поставлені при завантаженні або збереженні на не файловий системний накопичення (наприклад, хмарові блоби чи буфери в пам’яті).
// Signature reference
// public interface IPackageReader { void Read(/* ... */); }
// public interface IPackageWriter { void Write(/* ... */); }
//
// Standard usage: pass a Stream to the Workbook constructor
using Aspose.Cells_FOSS;
using System.IO;
byte[] fileBytes = File.ReadAllBytes("data.xlsx");
using var ms = new MemoryStream(fileBytes);
var wb = new Workbook(ms);
Console.WriteLine("Loaded from stream: " + wb.Worksheets.Count + " sheet(s)");Крок 5: Перевірка непідтримуваних частин
При завантаженні файлу XLSX, PackageModel.UnsupportedParts перераховує частини, які бібліотека не обробляє. Вони зберігаються, але не інтерпретуються. Access PackageLoadContext під час накладу за замовлення для перевірки моделі.
// PackageModel is populated internally during Workbook construction.
// Use LoadDiagnostics to detect load-time structural warnings without
// dropping to the PackageModel level directly.
using Aspose.Cells_FOSS;
var opts = new LoadOptions { TryRepairPackage = true, TryRepairXml = true };
var wb = new Workbook("file.xlsx", opts);
var diag = wb.LoadDiagnostics;
if (diag.HasRepairs)
Console.WriteLine("Package had " + diag.Issues.Count() + " repair entries.");Загальні проблеми та рішення
PackageStructureException викидається навіть з TryRepairPackage = true. Деякі структурні збої OPC не можуть бути автоматично відремонтовані (наприклад, карта типу вмісту повністю відсутня). Перевірте файл як дійсний ZIP з unzip -t file.xlsx.Якщо це дійсне, воно може бути зашифровано файли з паролем не підтримуються.
Workbook завантаження, але дещо не вистачає. Check LoadDiagnostics.Issues для DataLossRisk = true Ці вказівки показують частини, які були втрачені під час ремонту.
Custom IPackageReader не викликається. Переконайтеся, що конструктор перевантаження, яке приймає звичайний читач використовується. Не всі Workbook Конструктор перевантаження приймає індивідуальний читач пакетів.
Часто задавані запитання
Коли я повинен впроваджувати IPackageReader або IPackewriter?
Тільки коли ваш накопичувальний контент не є локальною файловою системою, наприклад завантаження безпосередньо з потоку хмарного зберігання без створення тимчасового файлу.
Непідтримувані частини в PackageModel збережені на зберіганні?
Нестандартні частини в UnsupportedParts Для вертотранспортної вірності нестандартних деталей, після обробки збережений XLSX на рівні ZIP.
У чому різниця між PackageStructureException і WorkbookLoadExcept?
PackageStructureException є провалом рівня OPC/ZIP (відсутність типу контенту, розриване зв’язок). WorkbookLoadException є провалом більш високого рівня при аналізі змісту XLSX XML.