Arbeiten mit Excel in C++: Bibliotheken und Codebeispiele

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Arbeiten mit Excel in C++: Überblick über Bibliotheken und praktische Beispiele



Bei der Entwicklung von Anwendungen in C++ besteht häufig die Notwendigkeit, mit Microsoft Excel-Dateien (Formate .xls und .xlsx) zu interagieren. Dies kann der Export von Berichten, der Import von Daten, die Automatisierung von Tabellen oder die Analyse großer Datenmengen sein. Im Gegensatz zu Sprachen mit einer umfangreichen Standardbibliothek (Python, C#) verfügt C++ nicht über integrierte Werkzeuge für die Arbeit mit Excel, aber es gibt mehrere leistungsstarke Drittanbieter-Bibliotheken, die diese Aufgabe lösen. In diesem Artikel betrachten wir drei beliebte Lösungen: xlnt, libxl und OpenXLSX, und geben Codebeispiele für jede.



1. Bibliothek xlnt (kostenlos, Open Source)



xlnt ist eine moderne C++-Bibliothek zum Lesen, Schreiben und Ändern von Dateien im Format .xlsx. Sie ist unabhängig von COM-Objekten oder einer installierten Excel-Instanz, was sie ideal für plattformübergreifende Projekte (Windows, Linux, macOS) macht. Die Bibliothek verwendet den C++14/17-Standard und wird von der Community aktiv unterstützt.



Hauptfunktionen:

  • Lesen und Schreiben von Zellen, Zeilen, Spalten.
  • Unterstützung von Stilen (Schriftarten, Farben, Rahmen, Ausrichtung).
  • Arbeit mit Formeln, Bereichen, verbundenen Zellen.
  • Verwaltung mehrerer Blätter.
  • Arbeit mit Bildern und Diagrammen (eingeschränkt).


Installation (über vcpkg oder Build aus Quellen):

vcpkg install xlnt


Beispiel: Erstellen einer einfachen XLSX-Datei

#include <xlnt/xlnt.hpp>

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

// Daten schreiben ws.cell("A1").value("Name"); ws.cell("B1").value("Anzahl"); ws.cell("C1").value("Preis");

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

// Stil für Überschriften xlnt::header_footer hf; xlnt::font bold_font(true); ws.cell("A1").font(bold_font);

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


Beispiel: Daten aus einer vorhandenen Datei lesen

#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. Bibliothek libxl (kommerziell, kostenlose Version verfügbar)



libxl ist eine schnelle und leichte Bibliothek für die Arbeit mit .xls und .xlsx. Sie unterstützt sowohl das alte binäre Excel 97-2003-Format als auch das moderne OOXML. Die Bibliothek wird unter einer kommerziellen Lizenz vertrieben, aber für die nicht-kommerzielle Nutzung ist eine kostenlose Version mit einer Einschränkung (Wasserzeichen auf dem Blatt) verfügbar.



Hauptfunktionen:

  • Unterstützung beider Formate: XLS und XLSX.
  • Zellenformatierung: Schriftarten, Farben, Rahmen, Füllung.
  • Arbeit mit Formeln, verbundenen Zellen, Autofiltern.
  • Verwaltung von Blättern, Diagrammen (eingeschränkt).
  • Hohe Leistung bei der Arbeit mit großen Dateien.


Installation: Laden Sie das SDK von der offiziellen Website (libxl.com) herunter und binden Sie die Header-Dateien und die Bibliothek in Ihr Projekt ein.



Beispiel: Daten in XLSX schreiben

#include "libxl.h"

int main() { libxl::Book* book = xlCreateXMLBook(); // oder xlCreateBook() für XLS if (book) { libxl::Sheet* sheet = book->addSheet("Blatt1"); if (sheet) { sheet

Empfehlungen