Como trabalhar com o processamento XML no .NET
Os arquivos XLSX armazenam seus dados em partes XML dentro de um pacote OPC ZIP. Aspose.Cells FOSS para .NET processa estes através de quatro classes de mapeamento XML: WorkbookXmlMapper, WorksheetXmlMapper, SharedStringTableXmlMapper, e StylesheetXmlMapper.Compreender essas classes ajuda a diagnosticar falhas de análise e configurar corretamente o carregamento tolerante a falha. Instalar com dotnet add package Aspose.Cells_FOSS.
Guia passo a passo
Passo 1: Instalar o pacote
dotnet add package Aspose.Cells_FOSSPasso 2: Importar o espaço de nomes
using Aspose.Cells_FOSS;Passo 3: Compreender as responsabilidades do XML Mapper
Cada mapeador lida com uma parte XML da estrutura XLSX:
| Mapper (mapa) | XML Parte | Manoplas |
|---|---|---|
WorkbookXmlMapper | xl/workbook.xml | Metadados do livro de trabalho, lista de folhas, nomes definidos |
WorksheetXmlMapper | xl/worksheets/sheetN.xml | Dados de células, fórmulas, hiperlinks, validações, formatos condicionais |
SharedStringTableXmlMapper | xl/sharedStrings.xml | Valores de cadeia desduplicados |
StylesheetXmlMapper | xl/styles.xml | Estilo de célula, fonte, preenchimento, bordas |
Estes mapeadores são invocados automaticamente durante o processo de análise. Workbook construção e Save().Não as instanciamos diretamente no código da aplicação.
Passo 4: Manusear a Excepção de XmlParsing
XmlParsingException é lançado quando um mapeador encontra XML malformado que não pode ser reparado. Enable TryRepairXml = true em: LoadOptions Para ativar o mapa de erro tolerante caminho de análise.
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);
}Passo 5: Use o LoadDiagnostics para identificar problemas XML
Após uma carga bem sucedida, verificar a posição do motor. LoadDiagnostics.Issues para o DiagnosticEntry registos para compreender quais os reparos XML foram aplicados e se algum resultou em perda de dados.
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}");
}Problemas comuns e soluções
XmlParsingException mesmo com TryRepairXml = true. O XML está tão malformado que o parser tolerante a falhas não pode recuperá-lo. Isso pode acontecer com arquivos criados por ferramentas não padrão que produzem XML sintaticamente inválido. Não há caminho de recuperação para esses arquivos.
Desaparecem estilos depois de carregar. A Comissão StylesheetXmlMapper Pode ter encontrado um corrupto . xl/styles.xml.- Cheque. LoadDiagnostics.Issues para as entradas com código relacionado a estilos, e DataLossRisk = true para as células afectadas.
As cadeias compartilhadas aparecem como células vazias. Um corrupto . xl/sharedStrings.xml pode fazer com que as células que fazem referência à tabela de cadeia compartilhada sejam renderizadas como vazias. Enable TryRepairXml Para tentar a recuperação.
Perguntas Frequentes
Posso implementar um mapeador XML personalizado?
Não. As classes de mapeadores XML são infraestruturas internas seladas e não foram projetadas para extensão.
Por que é o SharedStringTableXmlMapper separados?
A especificação OOXML separa os valores de cadeia repetidos em uma tabela de cordas compartilhada para reduzir o tamanho do arquivo. O mapper lida com a leitura e escrita desta tabulação independentemente dos dados da célula.
- Sim . TryRepairXml Corrigir todos os problemas de análise XML?
TryRepairXml XML estruturalmente válido, mas semanticamente inconsistente (por exemplo, tokens de fórmula que fazem referência a células inexistentes) ainda irá ser analisado sem erro.