Trabajo con Excel en C++: bibliotecas y herramientas
Trabajar con hojas de cálculo de Excel (formato .xlsx) es una de las tareas comunes en la programación de aplicaciones. C++ no tiene soporte integrado para este formato, pero existen varias bibliotecas de calidad que permiten leer, crear y editar archivos de Excel. En este artículo, veremos cuatro enfoques principales: libxlsxwriter, xlsxio, OpenXLSX y el trabajo a través de la interfaz COM en Windows.
1. libxlsxwriter — creación de XLSX «sobre la marcha»
libxlsxwriter es una biblioteca en C, con envoltorios para C++. Permite crear archivos XLSX completos con soporte para formato, fórmulas, gráficos y combinación de celdas. La principal ventaja es la velocidad y el mínimo consumo de memoria.
Instalación
Descargue el código fuente desde GitHub y compílelo con CMake:
git clone https://github.com/jmcnamara/libxlsxwriter.gitcd libxlsxwritermkdir build && cd buildcmake .. -DCMAKE_BUILD_TYPE=Releasemakesudo make installEjemplo: creación de una tabla con fórmula
#include <xlsxwriter.h>
int main() { lxw_workbook *workbook = workbook_new("report.xlsx"); lxw_worksheet *worksheet = workbook_add_worksheet(workbook, "Ventas");
// 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); worksheet_write_string(worksheet, 0, 3, "Total", NULL);
// Datos worksheet_write_string(worksheet, 1, 0, "Manzanas", 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 — lectura y escritura simple
xlsxio es una biblioteca ligera en C, orientada a la lectura de archivos XLSX. Admite análisis en streaming, lo que permite procesar archivos grandes sin cargarlos en la memoria.
Instalación
git clone https://github.com/brechtsanders/xlsxio.gitcd xlsxiomkdir build && cd buildcmake ..makesudo make installEjemplo: lectura de datos desde 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 — interfaz moderna de C++
OpenXLSX es una biblioteca en C++17 que proporciona una API orientada a objetos para trabajar con XLSX. Admite lectura, escritura, estilos y trabajo con múltiples hojas.
Instalación
git clone https://github.com/troldal/OpenXLSX.gitcd OpenXLSXmkdir build && cd buildcmake .. -DOPENXLSX_BUILD_TESTS=OFFmakesudo make installEjemplo: escritura con formato
#include <OpenXLSX/OpenXLSX.hpp>
int main() { using namespace OpenXLSX;
XLDocument doc; doc.create("formatted.xlsx"); auto wks = doc.workbook().worksheet("Sheet1");
// Escritura con formato XLCellValue v También en la biblioteca
Caché en Go (Golang): Redis, caché grupal y en memoria
Trabajo con Excel en Kotlin: bibliotecas Apache POI y envoltorios de Kotlin
Generador de códigos QR en Rust: creación e integración en aplicaciones web
Configuración de aplicaciones Swift (iOS/macOS): bibliotecas y herramientas