Trabajo con Excel en C++: bibliotecas y herramientas para lectura y escritura

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


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


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


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


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

Recommendations