Trabalhar com OOXML Packaging

Trabalhar com OOXML Packaging

Um arquivo XLSX é um arquivos ZIP de convenção aberta (OPC). Aspose.Cells FOSS para .NET expõe a camada de pacote subjacente através do IPackageReader, IPackageWriter, e o PackageModel Estas são APIs de baixo nível destinadas a diagnósticos e ferramentas A maioria das aplicações usa apenas o gráfico de alto nível. Workbook - A classe.


Modelo de embalagem

PackageModel representa o conteúdo lógico de um arquivo XLSX. Exponha três coleções: Parts (todas as partes de conteúdo), Relationships (Entradas relativas ao CPO), e UnsupportedParts Cada parte é descrita por um código de identificação (por exemplo, o número de páginas que estão presentes no ficheiro e não são processadas pela biblioteca). PackagePartDescriptor com: PartUri, ContentType, e 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 é preenchida internamente ao carregar um arquivo XLSX. A instanciação direta não faz parte do fluxo de trabalho padrão de alto nível.


IPacqueteReader e IPackageWriter

IPackageReader define uma única Read() método para a leitura de um pacote OPC. IPackageWriter define uma única Write() Estas interfaces são implementadas pelo leitor/escritor interno baseado em ZIP da biblioteca e podem ser fornecidas por implementações personalizadas para cenários de armazenamento na memória ou na nuvem.

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

PackageStructureException

PackageStructureException é lançado quando a estrutura do pacote XLSX é fundamentalmente inválida por exemplo, quando as relações OPC necessárias estão faltando. Ela estende a hierarquia geral de exceção e carrega uma mensagem descrevendo qual invariante estrutural foi violada.

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

Dicas e melhores práticas

  • Utilização: PackageModel.UnsupportedParts Para descobrir peças não-padrão que podem ser silenciosamente deixadas cair em viagem de ida e volta.
  • Captura de peixe PackageStructureException Além de: WorkbookLoadException quando carregam ficheiros de fontes não confiáveis.
  • A Comissão IPackageReader/IPackageWriter As interfaces são pontos de extensão; implementá-las apenas quando se necessita de armazenamento personalizado (por exemplo, carregamento a partir de um blob em nuvem sem arquivo local).
  • Para a maioria dos diagnósticos, LoadDiagnostics (acessível via: Workbook.LoadDiagnostics) é suficiente a descida para o pacote raramente é necessária.

Problemas comuns

EmissãoCausa da morteCorreção
PackageStructureException em cargaFalta de relação OPC exigidaSet (s) TryRepairPackage = true em: LoadOptions; verificação LoadDiagnostics.Issues após carga
UnsupportedParts não vazio.Arquivo contém extensões não-padrãoEstas peças são preservadas literalmente em salvo se estiverem presentes durante a carga.
Custa IPackageReader Não invocadoPassado para sobrecarga de constructor erradoAssegurar a LoadOptions ou constructor sobrecarga aceitando o leitor personalizado é usado

FAQ

Preciso de usar o IPackageReader/IPackerWriter para a elaboração normal das planilhas?

Não. Estas interfaces são pontos de extensão para cenários avançados. Todas as operações padrão leitura/escritura passam através da interface do computador, e todas as outras funções estão disponíveis no sistema. Workbook Diretamente.

As partes não suportadas são preservadas no save?

Partes enumeradas em: PackageModel.UnsupportedParts Se for exigida a fidelidade de ida e volta para peças não normalizadas, utilizar uma etapa de pós-processamento no nível do zip.

Qual a diferença entre PackageStructureException e WorkbookLoadExcept?

PackageStructureException indica uma falha no nível OPC/ZIP (tipo de conteúdo em falta, relação quebrada). WorkbookLoadException indica uma falha de análise ou semântica de nível superior no conteúdo do XLSX.


Resumo de referência da API

Classe / InterfaceDescrição:
IPackageReaderInterfaces para leitura de um pacote OPC (Read método)
IPackageWriterInterfaces para a escrita de um pacote OPC (Write método)
PackageLoadContextAcompanhamento de uma Workbook à sua PackageModel
PackageLoadContext.PackageRetorna o número de dados: PackageModel
PackageModel.PartsTodas as partes do conteúdo da embalagem
PackageModel.RelationshipsInformações relativas à OPC
PackageModel.UnsupportedPartsPartes não transformadas pela biblioteca
PackagePartDescriptor.PartUriURI do OPC da peça
PackagePartDescriptor.ContentTypeTipo de conteúdo MIME da parte
PackagePartDescriptor.CategoryCategoria lógica (folha de trabalho, estilos etc.)
PackageStructureExceptionAcusados de violações estruturais do CPO
 Português