Travailler avec Excel en C++ : bibliothèques et exemples de code

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++ : aperçu des bibliothèques et exemples pratiques



Lors du développement d'applications en C++, il est souvent nécessaire d'interagir avec des fichiers Microsoft Excel (formats .xls et .xlsx). Cela peut concerner l'exportation de rapports, l'importation de données, l'automatisation de tableaux ou l'analyse de grands volumes d'informations. Contrairement aux langages dotés d'une bibliothèque standard riche (Python, C#), C++ ne dispose pas d'outils intégrés pour travailler avec Excel, mais il existe plusieurs bibliothèques tierces puissantes qui résolvent ce problème. Dans cet article, nous examinerons trois solutions populaires : xlnt, libxl et OpenXLSX, et nous fournirons des exemples de code pour chacune d'elles.



1. Bibliothèque xlnt (gratuite, open source)



xlnt est une bibliothèque C++ moderne pour lire, écrire et modifier des fichiers au format .xlsx. Elle ne dépend pas d'objets COM ou d'Excel installé, ce qui la rend idéale pour les projets multiplateformes (Windows, Linux, macOS). La bibliothèque utilise la norme C++14/17 et est activement maintenue par la communauté.



Fonctionnalités principales :

  • Lecture et écriture de cellules, lignes, colonnes.
  • Prise en charge des styles (polices, couleurs, bordures, alignement).
  • Travail avec des formules, plages, cellules fusionnées.
  • Gestion de plusieurs feuilles.
  • Travail avec des images et des diagrammes (limité).


Installation (via vcpkg ou compilation à partir des sources) :

vcpkg install xlnt


Exemple : création d'un fichier XLSX simple

#include <xlnt/xlnt.hpp>

int main() { xlnt::workbook wb; xlnt::worksheet ws = wb.active_sheet(); ws.title("Rapport");

// Écriture des données ws.cell("A1").value("Nom"); ws.cell("B1").value("Quantité"); ws.cell("C1").value("Prix");

ws.cell("A2").value("Produit 1"); ws.cell("B2").value(10); ws.cell("C2").value(250.5);

// Style pour les en-têtes xlnt::header_footer hf; xlnt::font bold_font(true); ws.cell("A1").font(bold_font);

wb.save("example.xlsx"); return 0;}


Exemple : lecture de données à partir d'un fichier existant

#include <xlnt/xlnt.hpp>#include <iostream>

int main() { xlnt::workbook wb; wb.load("example.xlsx"); xlnt::worksheet ws = wb.active_sheet();

for (auto row : ws.rows(false)) { for (auto cell : row) { std::cout << cell.to_string() << "\\t"; } std::cout << std::endl; } return 0;}


2. Bibliothèque libxl (commerciale, version gratuite disponible)



libxl est une bibliothèque rapide et légère pour travailler avec .xls et .xlsx. Elle prend en charge à la fois l'ancien format binaire Excel 97-2003 et le moderne OOXML. La bibliothèque est distribuée sous licence commerciale, mais une version gratuite avec limitation (filigrane sur la feuille) est disponible pour une utilisation non commerciale.



Fonctionnalités principales :

  • Prise en charge des deux formats : XLS et XLSX.
  • Formatage des cellules : polices, couleurs, bordures, remplissage.
  • Travail avec des formules, cellules fusionnées, filtres automatiques.
  • Gestion des feuilles, diagrammes (limité).
  • Haute performance lors du travail avec de gros fichiers.


Installation : Téléchargez le SDK depuis le site officiel (libxl.com) et connectez les fichiers d'en-tête et la bibliothèque à votre projet.



Exemple : écriture de données dans un fichier XLSX

#include "libxl.h"

int main() { libxl::Book* book = xlCreateXMLBook(); // ou xlCreateBook() pour XLS if (book) { libxl::Sheet* sheet = book->addSheet("Feuille1"); if (sheet) { sheet

Recommendations