Trabalho com Excel em C++: visão geral das bibliotecas e exemplos de código
Apesar de C++ não ter suporte nativo ao formato Excel, existem várias bibliotecas maduras que permitem ler, criar e editar arquivos .xlsx e .xls. Neste artigo, veremos três das ferramentas mais populares: libxlsxwriter, xlsxio e OpenXLSX. Você aprenderá como instalar cada uma delas e obterá exemplos práticos para tarefas comuns — desde a geração de relatórios até a importação de dados.
1. libxlsxwriter — criando XLSX do zero
libxlsxwriter é uma biblioteca leve em C para escrever arquivos Excel 2007+ (XLSX). Ela não requer objetos COM ou Office instalado. Suporta formatação, fórmulas, gráficos, mesclagem de células e formatação condicional.
Instalação (Linux / macOS):
git clone https://github.com/jmcnamara/libxlsxwriter.gitcd libxlsxwritermakesudo make installExemplo: criando um relatório simples
#include <xlsxwriter.h>
int main() { lxw_workbook *workbook = workbook_new("report.xlsx"); lxw_worksheet *worksheet = workbook_add_worksheet(workbook, "Vendas");
// Cabeçalhos worksheet_write_string(worksheet, 0, 0, "Produto", NULL); worksheet_write_string(worksheet, 0, 1, "Quantidade", NULL); worksheet_write_string(worksheet, 0, 2, "Preço", NULL);
// Dados worksheet_write_string(worksheet, 1, 0, "Notebook", NULL); worksheet_write_number(worksheet, 1, 1, 10, NULL); worksheet_write_number(worksheet, 1, 2, 75000, NULL);
// Fórmula de soma worksheet_write_formula(worksheet, 2, 2, "=C2*B2", NULL);
workbook_close(workbook); return 0;}Compilação: g++ -o create_excel create_excel.cpp -lxlsxwriter
Vantagens: alta performance, tamanho pequeno, suporte ativo.
Desvantagens: apenas escrita (não consegue ler arquivos existentes).
2. xlsxio — leitura e escrita de XLSX
xlsxio é uma biblioteca em C com bindings para C++, que suporta tanto leitura quanto escrita de arquivos XLSX. É baseada em minizip e expat. Ideal para processamento em fluxo de arquivos grandes.
Instalação:
git clone https://github.com/brechtsanders/xlsxio.gitcd xlsxiocmake .makesudo make installExemplo: lendo dados do Excel
#include <xlsxio_read.h>
int main() { xlsxioreader reader = xlsxioread_open("data.xlsx"); if (reader) { xlsxioreadersheet sheet = xlsxioread_sheet_open(reader, NULL, XLSXIOREAD_SKIP_EMPTY_ROWS); while (xlsxioread_sheet_next_row(sheet)) { const char* value; while ((value = xlsxioread_sheet_next_cell(sheet)) != NULL) { printf("%s\\t", value); } printf(""); } xlsxioread_sheet_close(sheet); xlsxioread_close(reader); } return 0;}Compilação: g++ -o read_excel read_excel.cpp -lxlsxio_read
Vantagens: operação bidirecional, suporte a arquivos grandes.
Desvantagens: formatação limitada (apenas strings e números).
3. OpenXLSX — interface moderna C++17
OpenXLSX é uma biblioteca header-only para C++17 que fornece uma API orientada a objetos para leitura e escrita de XLSX. Não requer dependências externas, além da biblioteca padrão.
Instalação:
git clone https://github.com/troldal/OpenXLSX.gitcd OpenXLSXmkdir build && cd buildcmake ..makesudo make installExemplo: criando arquivo com formatação
#include <OpenXLSX/OpenXLSX.hpp>using namespace OpenXLSX;
int main() { Também na biblioteca
Observation para Swift: guia completo com exemplos práticos
better-sqlite3-typescript para TypeScript: guia completo com exemplos
Análise de HTML em Rust: bibliotecas e exemplos para web scraping
Filas de Tarefas para PHP: RabbitMQ, Gearman e PhpAmqpLib