Trabalhando com Excel em C++: bibliotecas e ferramentas para leitura e escrita

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

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 install


Exemplo: 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 -lxlsxwriter


2. 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 install


Exemplo: 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 install


Exemplo: 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

Recommendations