Как да работите с OOXML опаковки в .NET

Как да работите с OOXML опаковки в .NET

Файл XLSX е ZIP архив на Open Packaging Convention (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: Управление на PackageStructureException

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 Но липсва нещо. Проверка. LoadDiagnostics.Issues за: DataLossRisk = true Това са части, които са паднали по време на ремонт.

За митнически цели IPackageReader Не се обажда. Уверете се, че конструктор претоварване, което приема персонализирания читател е използван. Не всички Workbook Конструкторните претоварвания приемат персонализиран читач на пакети.

Често задавани въпроси

Кога трябва да внедря IPackageReader или IPackeWriter?

Само когато вашият архив не е локална файлова система например, зарязване директно от потока на облачно съхранение без създаване на временен файл.

Неподдържани ли са частите в PackageModel?

Нестандартни части в UnsupportedParts За да се гарантира верността на нестандартните части, след обработка съхранените XLSX в ZIP ниво.

Каква е разликата между PackageStructureException и WorkbookLoadExcept?

PackageStructureException е провал на ниво OPC/ZIP ( липсва тип съдържание, нарушена връзка). WorkbookLoadException е провал на по-високо ниво при анализиране на съдържанието XLSX XML.

Вижте също:

 Български