Travailler avec Excel en C++ : bibliothèques et outils
Travailler avec des tableurs Excel (format .xlsx) est une tâche courante en programmation applicative. C++ ne dispose pas de prise en charge native de ce format, mais il existe plusieurs bibliothèques de qualité qui permettent de lire, créer et modifier des fichiers Excel. Dans cet article, nous examinerons quatre approches principales : libxlsxwriter, xlsxio, OpenXLSX et le travail via l'interface COM sous Windows.
1. libxlsxwriter — création de XLSX « à la volée »
libxlsxwriter est une bibliothèque en C, avec des wrappers pour C++. Elle permet de créer des fichiers XLSX complets avec prise en charge du formatage, des formules, des graphiques et de la fusion de cellules. Son principal avantage est la vitesse et une consommation mémoire minimale.
Installation
Téléchargez les sources depuis GitHub et compilez via CMake :
git clone https://github.com/jmcnamara/libxlsxwriter.gitcd libxlsxwritermkdir build && cd buildcmake .. -DCMAKE_BUILD_TYPE=Releasemakesudo make installExemple : création d'un tableau avec une formule
#include <xlsxwriter.h>
int main() { lxw_workbook *workbook = workbook_new("report.xlsx"); lxw_worksheet *worksheet = workbook_add_worksheet(workbook, "Ventes");
// En-têtes worksheet_write_string(worksheet, 0, 0, "Produit", NULL); worksheet_write_string(worksheet, 0, 1, "Quantité", NULL); worksheet_write_string(worksheet, 0, 2, "Prix", NULL); worksheet_write_string(worksheet, 0, 3, "Total", NULL);
// Données worksheet_write_string(worksheet, 1, 0, "Pommes", NULL); worksheet_write_number(worksheet, 1, 1, 100, NULL); worksheet_write_number(worksheet, 1, 2, 2.5, NULL);
// Formule worksheet_write_formula(worksheet, 1, 3, "=B2*C2", NULL);
workbook_close(workbook); return 0;}Pour compiler, utilisez :
g++ -o create_excel create_excel.cpp -lxlsxwriter2. xlsxio — lecture et écriture simple
xlsxio est une bibliothèque légère en C, axée sur la lecture de fichiers XLSX. Elle prend en charge l'analyse en flux, ce qui permet de traiter de gros fichiers sans les charger en mémoire.
Installation
git clone https://github.com/brechtsanders/xlsxio.gitcd xlsxiomkdir build && cd buildcmake ..makesudo make installExemple : lecture de données depuis 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 — interface C++ moderne
OpenXLSX est une bibliothèque en C++17 qui fournit une API orientée objet pour travailler avec XLSX. Elle prend en charge la lecture, l'écriture, les styles et le travail avec plusieurs feuilles.
Installation
git clone https://github.com/troldal/OpenXLSX.gitcd OpenXLSXmkdir build && cd buildcmake .. -DOPENXLSX_BUILD_TESTS=OFFmakesudo make installExemple : écriture avec formatage
#include <OpenXLSX/OpenXLSX.hpp>
int main() { using namespace OpenXLSX;
XLDocument doc; doc.create("formatted.xlsx"); auto wks = doc.workbook().worksheet("Sheet1");
// Écriture avec format XLCellValue v Aussi dans la bibliothèque
Génération de PDF en PHP : meilleures bibliothèques et exemples de code
Jetons JWT en Swift : Travailler avec JSON Web Token sur iOS/macOS
Surveillance des applications TypeScript : bibliothèques, outils et configuration