Travailler avec Excel en C++ : bibliothèques et outils pour lire et écrire

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

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 install


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


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


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


Exemple : é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

Recommendations