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 desenvolvimento | Gerido por: |
|---|---|
| Estrutura do livro de trabalho | XlsxWorkbookProperties |
| Dados da folha de cálculo | WorksheetXmlMapper |
| Estilos e fontes | XlsxWorkbookStyles |
| Cartas partilhadas | SharedStringTableXmlMapper |
| Propriedades do documento | XlsxDocumentProperties |
| Nome definido | XlsxWorkbookDefinedNames |
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.