Introdução

Aspose.Cells FOSS para C++ é uma biblioteca open-source para criar, carregar, editar e salvar pastas de trabalho Excel .xlsx a partir de código C++ nativo, sem exigir Microsoft Excel ou qualquer automação COM. Ela se integra a uma compilação baseada em CMake como uma biblioteca de código-fonte — não há dependência externa de tempo de execução para instalar ou vincular além da biblioteca padrão C++.

A biblioteca tem licença MIT e tem como alvo o C++17. Ela é compilada com add_subdirectory ou FetchContent a partir de um clone git, já que não é distribuída por um gerenciador de pacotes como vcpkg ou Conan. A interface API é organizada em torno de um Workbook que possui um WorksheetCollection, planilhas que expõem um objeto Cells para acesso a nível de célula, e uma fachada Style para fontes, preenchimentos e bordas. Se você desenvolve serviços de backend, geradores de relatórios ou pipelines de exportação de dados em C++ e precisa produzir ou ler arquivos .xlsx sem recorrer ao Excel, esta biblioteca fornece uma maneira nativa de fazer isso.

Aspose.Cells FOSS também está disponível para .NET, Go, Java, Python, Rust e TypeScript. A biblioteca C++ segue a mesma abordagem do resto da família: um API focado em XLSX baseado no que realmente é implementado, sob uma licença permissiva.


O que está incluído

Estrutura de Pasta de Trabalho e Planilha

Um Workbook começa com uma planilha. Planilhas adicionais são criadas com WorksheetCollection::Add, e planilhas existentes são acessadas por índice ou por nome através do indexador da coleção. Cada Worksheet expõe suas células por meio de GetCells().

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

using namespace Aspose::Cells_FOSS;

Workbook workbook;
workbook.GetWorksheets()[0].SetName("Data");
workbook.GetWorksheets().Add("Summary");

Worksheet& data = workbook.GetWorksheets()["Data"];
data.GetCells()["A1"].PutValue("Product");
data.GetCells()["B1"].PutValue("Price");

Valores de Células, Fórmulas e Formatos Numéricos

Cell::PutValue tem sobrecargas para strings, inteiros, doubles, booleans e outros tipos de valor, portanto não é necessária conversão manual de string. SetFormula aceita uma fórmula com ou sem um = inicial e a normaliza; GetType então relata um CellValueType de Formula. A formatação numérica é aplicada através de Style::SetNumberFormat e afeta apenas o texto exibido retornado por GetDisplayStringValue — o valor armazenado subjacente permanece inalterado.

auto& sheet = workbook.GetWorksheets()[0];
auto cell = sheet.GetCells()["B2"];
cell.PutValue(1234.567);

auto style = cell.GetStyle();
style.SetNumberFormat("#,##0.00");
cell.SetStyle(style);

sheet.GetCells()["B3"].SetFormula("B2*2");
// GetFormula() now returns "=B2*2"; GetType() reports CellValueType::Formula

std::cout << cell.GetDisplayStringValue() << std::endl; // "1,234.57"

Estilização com Fontes, Preenchimentos e Bordas

Cell::GetStyle() e SetStyle() leem e gravam um objeto Style que agrupa Font, Borders e configurações de preenchimento. Cores são construídas com Color::FromArgb, e padrões de preenchimento são definidos através de FillPattern.

Style headerStyle = sheet.GetCells()["A1"].GetStyle();
Font font;
font.SetBold(true);
font.SetColor(Color::FromArgb(255, 255, 255, 255));
headerStyle.SetFont(font);
headerStyle.SetPattern(FillPattern::Solid);
headerStyle.SetForegroundColor(Color::FromArgb(255, 34, 120, 212));
sheet.GetCells()["A1"].SetStyle(headerStyle);

Validação de Dados e Formatação Condicional

ValidationCollection::Add define o escopo de uma regra Validation para um CellArea; definir seu ValidationType como List com um valor Formula1 produz um menu suspenso dentro da célula. ConditionalFormattingCollection::Add cria um grupo de formatação que é escopado com AddArea e preenchido com AddCondition, que aceita um FormatConditionType, um OperatorType e uma ou duas fórmulas.

int validationIndex = sheet.GetValidations().Add(CellArea::CreateCellArea("B1", "B3"));
auto validation = sheet.GetValidations()[validationIndex];
validation.SetType(ValidationType::List);
validation.SetFormula1("\"Open,Closed\"");
validation.SetShowError(true);

int cfIndex = sheet.GetConditionalFormattings().Add();
auto formatting = sheet.GetConditionalFormattings()[cfIndex];
formatting.AddArea(CellArea::CreateCellArea("C1", "C3"));
int conditionIndex = formatting.AddCondition(
    FormatConditionType::CellValue, OperatorType::Between, "1", "9");

auto condition = formatting[conditionIndex];
auto conditionStyle = condition.GetStyle();
conditionStyle.SetPattern(FillPattern::Solid);
conditionStyle.SetForegroundColor(Color::FromArgb(255, 255, 199, 206));
condition.SetStyle(conditionStyle);

Configuração de Página e Layout de Impressão

Worksheet::GetPageSetup() retorna um objeto PageSetup que controla o tamanho do papel, orientação, escala, área de impressão e linhas/colunas de título de impressão. Os valores são validados na atribuição — por exemplo, uma chamada SetScale fora do intervalo gera um CellsException.

auto& pageSetup = sheet.GetPageSetup();
pageSetup.SetOrientation(PageOrientationType::Landscape);
pageSetup.SetPaperSize(PaperSizeType::PaperA4);
pageSetup.SetFitToPagesWide(1);
pageSetup.SetFitToPagesTall(3);
pageSetup.SetPrintArea("$A$1:$D$20");
pageSetup.SetPrintTitleRows("$1:$2");

Início Rápido

Aspose.Cells FOSS para C++ não é distribuído via um gerenciador de pacotes — clone o repositório e adicione-o ao seu projeto CMake:

git clone https://github.com/aspose-cells-foss/Aspose.Cells-FOSS-for-Cpp.git

Adicione a biblioteca como um subdiretório do seu próprio CMakeLists.txt e vincule ao alvo aspose_cells_foss:

add_subdirectory(path/to/Aspose.Cells-FOSS-for-Cpp/Aspose.Cells.Foss.Cpp)
target_link_libraries(MyApp PRIVATE aspose_cells_foss)

Então crie, estilize e salve uma planilha:

#include "aspose/cells_foss/Workbook.h"
#include "aspose/cells_foss/Worksheet.h"
#include "aspose/cells_foss/Cell.h"
#include "aspose/cells_foss/Style.h"
#include "aspose/cells_foss/Font.h"
#include "aspose/cells_foss/Color.h"

using namespace Aspose::Cells_FOSS;

int main() {
    Workbook workbook;
    Worksheet& sheet = workbook.GetWorksheets()[0];
    sheet.SetName("Products");

    sheet.GetCells()["A1"].PutValue("Product");
    sheet.GetCells()["B1"].PutValue("Price");
    sheet.GetCells()["A2"].PutValue("Apple");
    sheet.GetCells()["B2"].PutValue(2.99);
    sheet.GetCells()["A3"].PutValue("Orange");
    sheet.GetCells()["B3"].PutValue(1.99);
    sheet.GetCells()["B4"].SetFormula("SUM(B2:B3)");

    Style header = sheet.GetCells()["A1"].GetStyle();
    Font font;
    font.SetBold(true);
    header.SetFont(font);
    sheet.GetCells()["A1"].SetStyle(header);

    workbook.Save("products.xlsx");
    return 0;
}

Formatos Compatíveis

FormatoExtensãoLerEscrever
XLSX.xlsx✓✓

XLSX é o único formato que a versão atual lê e grava. Os construtores de arquivo e fluxo de Workbook carregam dados .xlsx, e Save os grava novamente; os enums LoadFormat e SaveFormat controlam a seleção explícita de formato nessas chamadas.


Código Aberto & Licenciamento

Aspose.Cells FOSS para C++ tem licença MIT. O código-fonte completo está disponível em GitHub, e a licença permite uso comercial, modificação e redistribuição.


Primeiros passos

Recursos Relacionados