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:
PackageModelse 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.UnsupportedPartsDescubrir partes no estándar que pueden ser silenciosamente caídas en el recorrido. - Catch
PackageStructureExceptionAdemás de queWorkbookLoadExceptionCuando carga archivos de fuentes no confiables. - El
IPackageReader/IPackageWriterLas 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 deWorkbook.LoadDiagnostics) es suficiente - la caída en la capa de paquete rara vez es necesaria.
Problemas comunes
| Problemas | Causas | Fixado |
|---|---|---|
PackageStructureException En carga | La falta de relación OPC | Sitio TryRepairPackage = true En el LoadOptions;· Verificar LoadDiagnostics.Issues Después de la carga |
UnsupportedParts No vacío | El archivo contiene extensiones no estándar | Estas partes se conservan verbatim en ahorro si estaban presentes en carga. |
Custodificación IPackageReader No invocado | Transmitido a la carga de constructor equivocada | Asegurar 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 / Interface | Descripción |
|---|---|
IPackageReader | Interfaz para la lectura de un paquete OPC (Read El método) |
IPackageWriter | Interfaz para escribir un paquete OPC (Write El método) |
PackageLoadContext | Bendición a Workbook A su PackageModel |
PackageLoadContext.Package | De vuelta la PackageModel |
PackageModel.Parts | Todas las partes del paquete |
PackageModel.Relationships | Enlaces de la OPC |
PackageModel.UnsupportedParts | Las partes no procesadas por la biblioteca |
PackagePartDescriptor.PartUri | OPC URI para el partido |
PackagePartDescriptor.ContentType | Tipo de contenido del MIME |
PackagePartDescriptor.Category | Categoría lógica (labas de trabajo, estilos, etc.) |
PackageStructureException | Sobre las violaciones estructurales de la OPC |