Trabalhar com Processamento XML
Trabalhar com Processamento XML
Os arquivos XLSX armazenam seus dados em partes XML dentro de um pacote OPC. Aspose.Cells FOSS para .NET expõe a camada de análise e serialização do XML através de quatro classes de mapeamento: WorkbookXmlMapper, WorksheetXmlMapper, SharedStringTableXmlMapper, e StylesheetXmlMapper.Cada mapeador implementa ambos os sistemas . Read e a) Write Estas são APIs de infraestrutura interna a maioria do código da aplicação funciona inteiramente através das Workbook e a) Worksheet objetos.
Classe de mapeamento XML
Cada mapeador XML é responsável por uma parte XML da estrutura XLSX:
| Mapper (mapa) | Parte XML | Responsabilidade |
|---|---|---|
WorkbookXmlMapper | xl/workbook.xml | Metadados a nível de livro, referências às folhas e nomes definidos |
WorksheetXmlMapper | xl/worksheets/sheetN.xml | Dados de células, fórmulas, hiperlinks, formatos condicionais, validação dos dados |
SharedStringTableXmlMapper | xl/sharedStrings.xml | Tabela de cadeias compartilhada para valores de cordas desduplicados |
StylesheetXmlMapper | xl/styles.xml | Estilo de célula, fontes, preenchimentos, bordas e formatos de número |
Cada mapeador expõe dois métodos Read e a) Write invocado pela carga da biblioteca e por tubulações de poupança, respectivamente.
XmlParsingException
XmlParsingException é jogado quando um mapeador encontra XML malformada que não pode ser reparado. É levantado antes de WorkbookLoadException na hierarquia de erros quando a falha ocorre durante o parsing XML especificamente.
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)");
}
catch (XmlParsingException ex)
{
Console.WriteLine("XML parse error: " + ex.Message);
}
catch (WorkbookLoadException ex)
{
Console.WriteLine("Load error: " + ex.Message);
}Dicas e melhores práticas
- Set (s)
TryRepairXml = trueem:LoadOptionspara habilitar o mapa de erro tolerante do mapeador. - Captura de peixe
XmlParsingExceptionAlém de:WorkbookLoadExceptionquando se trata de ficheiros provenientes de sistemas externos susceptíveis de produzir XML malformado. - As classes de mapeador XML não são destinadas a ser instanciadas por código da aplicação elas são invocadas automaticamente durante o processo.
Workbookconstrução eSave(). - Se você precisar inspecionar o conteúdo XML bruto para diagnósticos, extraia o XLSX como um ZIP e examine diretamente as partes relevantes do XML.
Problemas comuns
| Emissão | Causa da morte | Correção |
|---|---|---|
XmlParsingException em carga | XML malformado em uma das partes XLSX | Set (s) TryRepairXml = true em: LoadOptions |
| Desaparecimento de estilos após a viagem de ida e volta | StylesheetXmlMapper Não consegui paralisar um registo de estilo personalizado | Verificação LoadDiagnostics.Issues para entradas de reparação relacionadas com o estilo |
| Falta de cadeias compartilhadas no ficheiro carregado | SharedStringTableXmlMapper encontrou uma tabela de cadeias compartilhadas corrompida | Ativar TryRepairXml;Verificar que o ficheiro original tem um valor válido. xl/sharedStrings.xml |
FAQ
Posso implementar o meu próprio mapeador XML?
As classes de mapeadores XML são infraestrutura interna selada. Os mapeadoras personalizadas não são suportados na superfície atual da API.
Porque é que há um sistema separado de SharedStringTableXmlMapper?
A especificação OOXML separa os valores de cadeia numa tabela de cordas partilhada (xl/sharedStrings.xmlO mapper lida com a leitura e escrita desta tabela de forma independente.
- Sim . TryRepairXml = true resolver todos os problemas XML?
TryRepairXml XML estruturalmente válido, mas semanticamente inconsistente (por exemplo referências de fórmula quebradas) ainda pode causar problemas como: XmlParsingException.
Resumo de referência da API
| Classe: | Descrição: |
|---|---|
WorkbookXmlMapper | Leitura/escrita xl/workbook.xml |
WorksheetXmlMapper | Leia/escreve partes XML por folha |
SharedStringTableXmlMapper | Leitura/escrita xl/sharedStrings.xml |
StylesheetXmlMapper | Leitura/escrita xl/styles.xml |
XmlParsingException | Lançado em falhas de análise XML irrecuperaveis |