Trabajar con el empaquetado OOXML

Trabajar con el empaquetado OOXML

Trabajar con el empaquetado OOXML

Un archivo XLSX es un archivio ZIP de Open Packaging Convention (OPC). Aspose.Cells FOSS para .NET exponer la capa de paquete subyacente a través del archivos Zip. IPackageReader, IPackageWriter,Y el PackageModel Estos son APIs de bajo nivel destinados a la diagnóstica y el herramientas —la mayoría de las aplicaciones utilizan sólo los niveles más altos. Workbook clase de clase.


Modelo de paquete

PackageModel Representa los contenidos lógicos de un archivo XLSX. Exponen tres colecciones: Parts (Todos los contenidos de la página), Relationships (en el caso de las entradas en relación con la OPC), y UnsupportedParts (las partes presentes en el archivo que la biblioteca no procesa). cada parte está descrita por un PackagePartDescriptor con PartUri, ContentType,y, 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);

Nota: PackageModel se populará internamente al cargar un archivo XLSX. La instancia directa no forma parte del flujo de trabajo de alto nivel estándar.


IPackageReader y IPacageWriter

IPackageReader Definición de un solo Read() El método de lectura de un paquete OPC. IPackageWriter Definición de un solo Write() Estas interfaces son implementadas por el lector/escritor interno de la biblioteca basado en ZIP y pueden ser suministradas mediante implementaciones personalizadas para escenarios de almacenamiento en memoria o nube.

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

PackageStructureException

PackageStructureException Se lanza cuando la estructura del paquete XLSX es fundamentalmente inadecuada —por ejemplo, cuando las relaciones de OPC requeridas se faltan. extenderá la hierarquía general de excepción y lleva un mensaje que describe cuál invariante estructural fue violado.

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);
}

Consejos y mejores prácticas

  • Uso PackageModel.UnsupportedParts Descubrir partes no estándar que pueden ser silenciosamente caídas en el recorrido.
  • Catch PackageStructureException Además de que WorkbookLoadException Cuando carga archivos de fuentes no confiables.
  • El IPackageReader/IPackageWriter Las interfaces son puntos de extensión; sólo se implementan cuando necesitas almacenamiento personalizado (por ejemplo, cargar desde un blob en la nube sin un archivo local).
  • Para la mayoría de los diagnósticos, LoadDiagnostics (Accesible a través de Workbook.LoadDiagnostics) es suficiente - la caída en la capa de paquete rara vez es necesaria.

Problemas comunes

ProblemasCausasFixado
PackageStructureException En cargaLa falta de relación OPCSitio TryRepairPackage = true En el LoadOptions;· Verificar LoadDiagnostics.Issues Después de la carga
UnsupportedParts No vacíoEl archivo contiene extensiones no estándarEstas partes se conservan verbatim en ahorro si estaban presentes en carga.
Custodificación IPackageReader No invocadoTransmitido a la carga de constructor equivocadaAsegurar el LoadOptions o sobrecarga de constructor aceptando el lector personalizado se utiliza

FAQ

¿Necesito usar IPackageReader/IPackagesWriter para trabajar con la hoja de espalda normal?

No. Estas interfaces son puntos de extensión para los escenarios avanzados.Todas las operaciones estándar de lectura/escritura se realizan a través del Workbook directamente .

¿Se conservan las partes no apoyadas?

Las partes listadas en PackageModel.UnsupportedParts No se procesan y no pueden ser reescribidos.Si se requiere fidelidad de ronda para partes no estándar, utilice un paso post-procesador de nivel zip.

¿Cuál es la diferencia entre PackageStructureException y WorkbookLoadExcepción?

PackageStructureException indica un fracaso de nivel OPC/ZIP (tipo de contenido perdido, relación quebrantada). WorkbookLoadException indica un parse de nivel superior o una falla semántica en el contenido XLSX.


Sumación de referencia API

Interfaz / InterfaceDescripción
IPackageReaderInterfaz para la lectura de un paquete OPC (Read El método)
IPackageWriterInterfaz para escribir un paquete OPC (Write El método)
PackageLoadContextBendición a Workbook A su PackageModel
PackageLoadContext.PackageDe vuelta la PackageModel
PackageModel.PartsTodas las partes del paquete
PackageModel.RelationshipsEnlaces de la OPC
PackageModel.UnsupportedPartsLas partes no procesadas por la biblioteca
PackagePartDescriptor.PartUriOPC URI para el partido
PackagePartDescriptor.ContentTypeTipo de contenido del MIME
PackagePartDescriptor.CategoryCategoría lógica (labas de trabajo, estilos, etc.)
PackageStructureExceptionSobre las violaciones estructurales de la OPC

Ver también

 Español