Como trabalhar com XLSX Packaging em C++

Como trabalhar com XLSX Packaging em C++

Aspose.Cells FOSS for C++ reads and writes Excel files in the .xlsx O formato XML aberto. Internamente, o XlsxWorkbookSerializer Esta guia explica como usar a API de carga/salvo e o que a camada de embalagem gerencia automaticamente.

Guia passo a passo

Passo 1: Prepare a construção

cmake_minimum_required(VERSION 3.15)
project(XlsxPackaging CXX)
set(CMAKE_CXX_STANDARD 17)

add_subdirectory(path/to/Aspose.Cells-FOSS-for-Cpp)
add_executable(XlsxPackaging main.cpp)
target_link_libraries(XlsxPackaging PRIVATE Aspose.Cells.Foss.Cpp)

Passo 2: Inclua cabeçalhos

#include "aspose/cells_foss/Workbook.h"
#include "aspose/cells_foss/Worksheet.h"
#include "aspose/cells_foss/Cell.h"

using namespace Aspose::Cells_FOSS;

Passo 3: Carregar um arquivo XLSX existente

A Comissão Workbook(filePath) chamadas de constructor XlsxWorkbookSerializer::Load para desembalar internamente todas as partes do Open XML:

int main() {
    Workbook workbook("input.xlsx");
    Worksheet& sheet = workbook.GetWorksheets()[0];
    std::string title = sheet.GetCells()["A1"].GetStringValue();
    return 0;
}

Passo 4: Modificar o livro de trabalho

Faça qualquer célula, estilo ou alterações estruturais usando a API padrão:

sheet.GetCells()["A1"].PutValue("Updated Title");
sheet.GetCells()["B2"].PutValue(99.0);
sheet.GetCells()["C3"].SetFormula("=B2*2");

Passo 5: Salve o livro de trabalho

Chama-me . Workbook::Save(fileName) para empacotar todas as partes do Open XML de volta num arquivo XLSX:

workbook.Save("output.xlsx");
workbook.Dispose();

O formato é inferido do .xlsx A extensão. XlsxWorkbookSerializer::Save O método trata de escrever o xl/workbook.xml, xl/worksheets/sheet*.xml, xl/styles.xml, e xl/sharedStrings.xml peças automaticamente.


Passo 6: Entender o que a camada de embalagem gerencia

Não é necessário interagir directamente com os componentes interiores da embalagem.:

Parte II - Oficinas de investigação e desenvolvimentoGerido por:
Estrutura do livro de trabalhoXlsxWorkbookProperties
Dados da folha de cálculoWorksheetXmlMapper
Estilos e fontesXlsxWorkbookStyles
Cartas partilhadasSharedStringTableXmlMapper
Propriedades do documentoXlsxDocumentProperties
Nome definidoXlsxWorkbookDefinedNames

Problemas comuns e soluções

Arquivo salva mas não abre no Excel Certifique-se de que o caminho do ficheiro de saída usa a .xlsx Salvar com uma extensão diferente pode produzir um arquivo não reconhecido.

Estilo perdido após viagem de ida e volta Aplicar o pedido de autorização Cell::SetStyle(style) Antes de ligares. Workbook::Save.Os estilos modificados após a salvação não são escritos.

Carregamento de ficheiro como vazio Verificar que o ficheiro não está protegido por senha e é um XLSX válido (não .xls ou a) .xlsm) A biblioteca apoia a formação de professores e estudantes. .xlsx Só isso.

Nome definido ausente após salvar Utilização: Workbook::EnsureUniqueDefinedName() antes de salvar para resolver quaisquer conflitos de âmbito.

Memória não liberada Chama-me . workbook.Dispose() Depois de poupar para liberar todos os recursos internos XLSX embalagem.

Perguntas Frequentes

Posso salvar em formatos diferentes do XLSX?

A versão atual v0.1 suporta apenas a salvação para XLSX. Carregamento de CSV é suportado, mas a conservação em CS V não está disponível.

A biblioteca conserva partes existentes que eu não modifiquei?

Sim, o serializador faz viagens de ida e volta para todas as partes que carrega.

Posso inspecionar o XML bruto de uma parte do livro?

A Comissão XmlDocument::SaveToUtf8() O método serializa um documento XML para uma cadeia de caracteres. No entanto, o acesso direto às partes do arquivo XLSX não é exposto na API pública. Use XmlDocument para processamento XML personalizado.

Existe uma API de streaming para arquivos grandes?

Não, a versão atual carrega toda a pasta de trabalho na memória. Para arquivos muito grandes, considere dividir o seu processamento em folhas de trabalhos menores.

O que acontece se eu salvar sobre o mesmo arquivo carregado?

A biblioteca escreve para um novo buffer interno antes de sobrescrever o arquivo no disco, então a salvação em local não corrompe o código-fonte.

Ver também:

 Português