Trabalhando com Excel em C++: bibliotecas e ferramentas
Trabalhar com planilhas Excel (formato .xlsx) é uma tarefa comum na programação aplicada. O C++ não possui suporte nativo para este formato, mas existem várias bibliotecas de qualidade que permitem ler, criar e editar arquivos Excel. Neste artigo, abordaremos quatro abordagens principais: libxlsxwriter, xlsxio, OpenXLSX e trabalho através da interface COM no Windows.
1. libxlsxwriter — criação de XLSX "em tempo real"
libxlsxwriter é uma biblioteca em C, com wrappers para C++. Ela permite criar arquivos XLSX completos com suporte a formatação, fórmulas, gráficos e mesclagem de células. A principal vantagem é a velocidade e o consumo mínimo de memória.
Instalação
Baixe os fontes do GitHub e compile via CMake:
git clone https://github.com/jmcnamara/libxlsxwriter.gitcd libxlsxwritermkdir build && cd buildcmake .. -DCMAKE_BUILD_TYPE=Releasemakesudo make installExemplo: criando uma tabela com fórmula
#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); worksheet_write_string(worksheet, 0, 3, "Total", NULL);
// Dados worksheet_write_string(worksheet, 1, 0, "Maçãs", NULL); worksheet_write_number(worksheet, 1, 1, 100, NULL); worksheet_write_number(worksheet, 1, 2, 2.5, NULL);
// Fórmula worksheet_write_formula(worksheet, 1, 3, "=B2*C2", NULL);
workbook_close(workbook); return 0;}Para compilar, use:
g++ -o create_excel create_excel.cpp -lxlsxwriter2. xlsxio — leitura e escrita simples
xlsxio é uma biblioteca leve em C, focada na leitura de arquivos XLSX. Ela suporta análise em fluxo, permitindo processar arquivos grandes sem carregá-los na memória.
Instalação
git clone https://github.com/brechtsanders/xlsxio.gitcd xlsxiomkdir build && cd buildcmake ..makesudo make installExemplo: lendo dados do Excel
#include <xlsxio_read.h>
int main() { xlsxioreader xlsxioread = xlsxioread_open("data.xlsx"); if (!xlsxioread) return 1;
xlsxioreadersheet sheet = xlsxioread_sheet_open(xlsxioread, NULL, 0); if (sheet) { 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(xlsxioread); return 0;}3. OpenXLSX — interface C++ moderna
OpenXLSX é uma biblioteca em C++17 que fornece uma API orientada a objetos para trabalhar com XLSX. Suporta leitura, escrita, estilos e trabalho com várias planilhas.
Instalação
git clone https://github.com/troldal/OpenXLSX.gitcd OpenXLSXmkdir build && cd buildcmake .. -DOPENXLSX_BUILD_TESTS=OFFmakesudo make installExemplo: escrita com formatação
#include <OpenXLSX/OpenXLSX.hpp>
int main() { using namespace OpenXLSX;
XLDocument doc; doc.create("formatted.xlsx"); auto wks = doc.workbook().worksheet("Sheet1");
// Escrita com formato XLCellValue v Também na biblioteca
Geração de PDF em TypeScript: bibliotecas e ferramentas para Node.js
OpenAPI / Swagger para Java: guia completo com exemplos
Cliente HTTP para JavaScript (Node.js): principais bibliotecas para trabalhar com API