Trabajo con Excel en C++: bibliotecas y ejemplos de código

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Trabajo con Excel en C++: resumen de bibliotecas y ejemplos prácticos



Al desarrollar aplicaciones en C++, a menudo surge la necesidad de interactuar con archivos de Microsoft Excel (formatos .xls y .xlsx). Esto puede ser para exportar informes, importar datos, automatizar hojas de cálculo o analizar grandes volúmenes de información. A diferencia de lenguajes con una biblioteca estándar rica (Python, C#), C++ no tiene herramientas integradas para trabajar con Excel, pero existen varias bibliotecas externas potentes que resuelven esta tarea. En este artículo, veremos tres soluciones populares: xlnt, libxl y OpenXLSX, y proporcionaremos ejemplos de código para cada una.



1. Biblioteca xlnt (gratuita, de código abierto)



xlnt es una biblioteca moderna de C++ para leer, escribir y modificar archivos en formato .xlsx. No depende de objetos COM ni de tener Excel instalado, lo que la hace ideal para proyectos multiplataforma (Windows, Linux, macOS). La biblioteca utiliza el estándar C++14/17 y cuenta con el apoyo activo de la comunidad.



Características principales:

  • Lectura y escritura de celdas, filas y columnas.
  • Soporte de estilos (fuentes, colores, bordes, alineación).
  • Trabajo con fórmulas, rangos y celdas combinadas.
  • Gestión de múltiples hojas.
  • Trabajo con imágenes y gráficos (limitado).


Instalación (a través de vcpkg o compilación desde el código fuente):

vcpkg install xlnt


Ejemplo: crear un archivo XLSX simple

#include <xlnt/xlnt.hpp>

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

// Escritura de datos ws.cell("A1").value("Nombre"); ws.cell("B1").value("Cantidad"); ws.cell("C1").value("Precio");

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

// Estilo para los encabezados xlnt::header_footer hf; xlnt::font bold_font(true); ws.cell("A1").font(bold_font);

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


Ejemplo: leer datos de un archivo existente

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

int main() { xlnt::workbook wb; wb.load("example.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, con versión gratuita)



libxl es una biblioteca rápida y ligera para trabajar con .xls y .xlsx. Soporta tanto el antiguo formato binario de Excel 97-2003 como el moderno OOXML. La biblioteca se distribuye bajo licencia comercial, pero para uso no comercial está disponible una versión gratuita con una limitación (marca de agua en la hoja).



Características principales:

  • Soporte de ambos formatos: XLS y XLSX.
  • Formateo de celdas: fuentes, colores, bordes, relleno.
  • Trabajo con fórmulas, celdas combinadas y autofiltros.
  • Gestión de hojas y gráficos (limitado).
  • Alto rendimiento al trabajar con archivos grandes.


Instalación: Descargue el SDK del sitio web oficial (libxl.com) y conecte los archivos de encabezado y la biblioteca a su proyecto.



Ejemplo: escribir datos en XLSX

#include "libxl.h"

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

Recommendations