Com treballar amb el processament XML a .NET
Els fitxers XLSX emmagatzemen les seves dades en parts XML dins d’un paquet OPC ZIP. Aspose.Cells FOSS per a .NET processa aquests a través de quatre classes de mapatge XML: WorkbookXmlMapper, WorksheetXmlMapper, SharedStringTableXmlMapper i StylesheetXmlMapper. Entendre aquestes classes us ajuda a diagnosticar fallades d’anàlisi i a configurar correctament la càrrega tolerant a errors. Instal·leu amb dotnet add package Aspose.Cells_FOSS.
Guia pas a pas
Pas 1: Instal·la el paquet
dotnet add package Aspose.Cells_FOSSPas 2: Importa l’espai de noms
using Aspose.Cells_FOSS;Pas 3: Entendre les responsabilitats del mapejador XML
Cada mapejador gestiona una part XML de l’estructura XLSX:
| Mapador | Part XML | Gestiona |
|---|---|---|
WorkbookXmlMapper | xl/workbook.xml | Metadades del llibre de treball, llista de fulls, noms definits |
WorksheetXmlMapper | xl/worksheets/sheetN.xml | Dades de cel·la, fórmules, enllaços, validacions, formats condicionals |
SharedStringTableXmlMapper | xl/sharedStrings.xml | Valors de cadena desduplicats |
StylesheetXmlMapper | xl/styles.xml | Estils de cel·la, tipografies, emplenaments, vores |
Aquests mappers s’invoquen automàticament durant la construcció de Workbook i Save(). No els instantiate directament al codi de l’aplicació.
Pas 4: Gestiona XmlParsingException
XmlParsingException es llança quan un mapper troba XML mal format que no es pot reparar. Activeu TryRepairXml = true a LoadOptions per activar el camí d’anàlisi tolerant a errors del mapper.
using Aspose.Cells_FOSS;
var opts = new LoadOptions
{
TryRepairPackage = true,
TryRepairXml = true,
};
try
{
var wb = new Workbook("malformed.xlsx", opts);
Console.WriteLine("Loaded: " + wb.Worksheets.Count + " sheet(s)");
var diag = wb.LoadDiagnostics;
if (diag.HasRepairs)
Console.WriteLine("XML repairs applied. Data loss risk: " + diag.HasDataLossRisk);
}
catch (XmlParsingException ex)
{
Console.WriteLine("Unrecoverable XML error: " + ex.Message);
}
catch (WorkbookLoadException ex)
{
Console.WriteLine("Load failed: " + ex.Message);
}Pas 5: Utilitzeu LoadDiagnostics per identificar problemes XML
Després d’una càrrega exitosa, comproveu LoadDiagnostics.Issues per a registres DiagnosticEntry per entendre quines reparacions XML s’han aplicat i si alguna ha provocat pèrdua de dades.
using Aspose.Cells_FOSS;
var opts = new LoadOptions { TryRepairXml = true };
var wb = new Workbook("file.xlsx", opts);
var diag = wb.LoadDiagnostics;
foreach (var entry in diag.Issues)
{
Console.WriteLine($"[{entry.Severity}] {entry.Code}");
Console.WriteLine($" Message: {entry.Message}");
Console.WriteLine($" RepairApplied: {entry.RepairApplied} DataLossRisk: {entry.DataLossRisk}");
}Problemes comuns i solucions
XmlParsingException fins i tot amb TryRepairXml = true.
El XML està tan mal format que l’analitzador tolerant a errors no pot recuperar‑lo. Això pot passar amb fitxers creats per eines no estàndard que produeixen XML sintàcticament invàlid. No hi ha cap camí de recuperació per a aquests fitxers.
Els estils falten després de la càrrega.
El StylesheetXmlMapper pot haver trobat un xl/styles.xml corrupte. Comproveu LoadDiagnostics.Issues per a entrades amb codi relacionat amb estils, i DataLossRisk = true per a cel·les afectades.
Les cadenes compartides apareixen com a cel·les buides.
Un xl/sharedStrings.xml corrupte pot fer que les cel·les que fan referència a la taula de cadenes compartides es mostrin buides. Activeu TryRepairXml per intentar la recuperació.
Preguntes freqüents
Puc implementar un mapper XML personalitzat?
No. Les classes XML mapper són infraestructura interna segellada i no estan dissenyades per a l’extensió.
Per què el SharedStringTableXmlMapper està separat?
L’especificació OOXML separa els valors de cadena repetits en una taula de cadenes compartides per reduir la mida del fitxer. El mapper gestiona la lectura i l’escriptura d’aquesta taula independentment de les dades de les cel·les.
¿ TryRepairXml arregla tots els problemes d’anàlisi XML?
TryRepairXml gestiona errors recuperables com ara elements no tancats, espais de noms que falten i valors d’atribut truncats. XML estructuralment vàlid però semànticament inconsistent (p. ex. tokens de fórmula que fan referència a cel·les inexistents) encara s’analitzarà sense error.