Trabajo con Excel en C++: resumen de bibliotecas y ejemplos de código
A pesar de que C++ no tiene soporte incorporado para el formato Excel, existen varias bibliotecas maduras que permiten leer, crear y editar archivos .xlsx y .xls. En este artículo, veremos las tres herramientas más populares: libxlsxwriter, xlsxio y OpenXLSX. Aprenderá cómo instalar cada una de ellas y obtendrá ejemplos prácticos para tareas típicas, desde la generación de informes hasta la importación de datos.
1. libxlsxwriter — creación de XLSX desde cero
libxlsxwriter es una biblioteca ligera en C para escribir archivos Excel 2007+ (XLSX). No requiere objetos COM ni tener Office instalado. Soporta formato, fórmulas, gráficos, combinación de celdas y formato condicional.
Instalación (Linux / macOS):
git clone https://github.com/jmcnamara/libxlsxwriter.gitcd libxlsxwritermakesudo make installEjemplo: creación de un informe simple
#include <xlsxwriter.h>
int main() { lxw_workbook *workbook = workbook_new("report.xlsx"); lxw_worksheet *worksheet = workbook_add_worksheet(workbook, "Sales");
// Encabezados worksheet_write_string(worksheet, 0, 0, "Producto", NULL); worksheet_write_string(worksheet, 0, 1, "Cantidad", NULL); worksheet_write_string(worksheet, 0, 2, "Precio", NULL);
// Datos worksheet_write_string(worksheet, 1, 0, "Portátil", NULL); worksheet_write_number(worksheet, 1, 1, 10, NULL); worksheet_write_number(worksheet, 1, 2, 75000, NULL);
// Fórmula de suma worksheet_write_formula(worksheet, 2, 2, "=C2*B2", NULL);
workbook_close(workbook); return 0;}Compilación: g++ -o create_excel create_excel.cpp -lxlsxwriter
Ventajas: alto rendimiento, tamaño pequeño, soporte activo.
Desventajas: solo escritura (no puede leer archivos existentes).
2. xlsxio — lectura y escritura de XLSX
xlsxio es una biblioteca en C con enlaces para C++ que admite tanto lectura como escritura de archivos XLSX. Está basada en minizip y expat. Es ideal para el procesamiento por flujo de archivos grandes.
Instalación:
git clone https://github.com/brechtsanders/xlsxio.gitcd xlsxiocmake .makesudo make installEjemplo: lectura de datos desde 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;}Compilación: g++ -o read_excel read_excel.cpp -lxlsxio_read
Ventajas: trabajo bidireccional, soporte para archivos grandes.
Desventajas: formato limitado (solo cadenas y números).
3. OpenXLSX — interfaz moderna C++17
OpenXLSX es una biblioteca header-only para C++17 que proporciona una API orientada a objetos para leer y escribir XLSX. No requiere dependencias externas, excepto la biblioteca estándar.
Instalación:
git clone https://github.com/troldal/OpenXLSX.gitcd OpenXLSXmkdir build && cd buildcmake ..makesudo make installEjemplo: creación de un archivo con formato
#include <OpenXLSX/OpenXLSX.hpp>using namespace OpenXLSX;
int main() { También en la biblioteca
Trabajo con imágenes en Rust: la biblioteca image y más
Trabajo con Kafka en Go (Golang): biblioteca segmentio/kafka-go
Internacionalización (i18n) en Rust: mejores bibliotecas y prácticas
Envío de correo electrónico en TypeScript: guía completa con nodemailer y SMTP
Pruebas en JavaScript (Node.js): frameworks y herramientas