Trabalhando com Excel em C++: bibliotecas e exemplos de código

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++: visão geral das bibliotecas e exemplos práticos



Ao desenvolver aplicações em C++, frequentemente surge a necessidade de interagir com arquivos do Microsoft Excel (formatos .xls e .xlsx). Isso pode incluir exportação de relatórios, importação de dados, automação de planilhas ou análise de grandes volumes de informações. Diferente de linguagens com bibliotecas padrão robustas (Python, C#), o C++ não possui ferramentas nativas para trabalhar com Excel, mas existem várias bibliotecas de terceiros poderosas que resolvem esse problema. Neste artigo, abordaremos três soluções populares: xlnt, libxl e OpenXLSX, além de fornecer exemplos de código para cada uma delas.



1. Biblioteca xlnt (gratuita, código aberto)



xlnt é uma biblioteca C++ moderna para ler, escrever e modificar arquivos no formato .xlsx. Ela não depende de objetos COM ou do Excel instalado, tornando-a ideal para projetos multiplataforma (Windows, Linux, macOS). A biblioteca utiliza o padrão C++14/17 e é ativamente mantida pela comunidade.



Principais recursos:

  • Leitura e escrita de células, linhas e colunas.
  • Suporte a estilos (fontes, cores, bordas, alinhamento).
  • Trabalho com fórmulas, intervalos e células mescladas.
  • Gerenciamento de várias planilhas.
  • Trabalho com imagens e gráficos (limitado).


Instalação (via vcpkg ou compilação a partir do código-fonte):

vcpkg install xlnt


Exemplo: criando um arquivo XLSX simples

#include <xlnt/xlnt.hpp>

int main() { xlnt::workbook wb; xlnt::worksheet ws = wb.active_sheet(); ws.title("Relatório");

// Escrevendo dados ws.cell("A1").value("Nome"); ws.cell("B1").value("Quantidade"); ws.cell("C1").value("Preço");

ws.cell("A2").value("Produto 1"); ws.cell("B2").value(10); ws.cell("C2").value(250.5);

// Estilo para cabeçalhos xlnt::header_footer hf; xlnt::font bold_font(true); ws.cell("A1").font(bold_font);

wb.save("exemplo.xlsx"); return 0;}


Exemplo: lendo dados de um arquivo existente

#include <xlnt/xlnt.hpp>#include <iostream>

int main() { xlnt::workbook wb; wb.load("exemplo.xlsx"); xlnt::worksheet ws = wb.active_sheet();

for (auto row : ws.rows(false)) { for (auto cell : row) { std::cout << cell.to_string() << "\\t"; } std::cout << std::endl; } return 0;}


2. Biblioteca libxl (comercial, possui versão gratuita)



libxl é uma biblioteca rápida e leve para trabalhar com .xls e .xlsx. Ela suporta tanto o formato binário antigo do Excel 97-2003 quanto o moderno OOXML. A biblioteca é distribuída sob licença comercial, mas para uso não comercial está disponível uma versão gratuita com limitação (marca d'água na planilha).



Principais recursos:

  • Suporte a ambos os formatos: XLS e XLSX.
  • Formatação de células: fontes, cores, bordas, preenchimento.
  • Trabalho com fórmulas, células mescladas e autofiltros.
  • Gerenciamento de planilhas e gráficos (limitado).
  • Alta performance ao trabalhar com arquivos grandes.


Instalação: Baixe o SDK do site oficial (libxl.com) e adicione os arquivos de cabeçalho e a biblioteca ao seu projeto.



Exemplo: escrevendo dados em XLSX

#include "libxl.h"

int main() { libxl::Book* book = xlCreateXMLBook(); // ou xlCreateBook() para XLS if (book) { libxl::Sheet* sheet = book->addSheet("Planilha1"); if (sheet) { sheet

Recommendations