Arbeiten mit Excel in C++: Überblick über Bibliotheken und Codebeispiele
Obwohl C++ keine integrierte Unterstützung für das Excel-Format bietet, gibt es mehrere ausgereifte Bibliotheken, mit denen Sie .xlsx- und .xls-Dateien lesen, erstellen und bearbeiten können. In diesem Artikel betrachten wir die drei gängigsten Werkzeuge: libxlsxwriter, xlsxio und OpenXLSX. Sie erfahren, wie Sie jede davon installieren, und erhalten funktionierende Beispiele für typische Aufgaben – von der Berichtserstellung bis zum Datenimport.
1. libxlsxwriter – XLSX von Grund auf erstellen
libxlsxwriter ist eine leichte C-Bibliothek zum Schreiben von Excel 2007+-Dateien (XLSX). Sie benötigt keine COM-Objekte oder installiertes Office. Unterstützt Formatierung, Formeln, Diagramme, Zellenverbindung und bedingte Formatierung.
Installation (Linux / macOS):
git clone https://github.com/jmcnamara/libxlsxwriter.gitcd libxlsxwritermakesudo make installBeispiel: Erstellen eines einfachen Berichts
#include <xlsxwriter.h>
int main() { lxw_workbook *workbook = workbook_new("report.xlsx"); lxw_worksheet *worksheet = workbook_add_worksheet(workbook, "Sales");
// Überschriften worksheet_write_string(worksheet, 0, 0, "Produkt", NULL); worksheet_write_string(worksheet, 0, 1, "Anzahl", NULL); worksheet_write_string(worksheet, 0, 2, "Preis", NULL);
// Daten worksheet_write_string(worksheet, 1, 0, "Laptop", NULL); worksheet_write_number(worksheet, 1, 1, 10, NULL); worksheet_write_number(worksheet, 1, 2, 75000, NULL);
// Summenformel worksheet_write_formula(worksheet, 2, 2, "=C2*B2", NULL);
workbook_close(workbook); return 0;}Kompilierung: g++ -o create_excel create_excel.cpp -lxlsxwriter
Vorteile: hohe Leistung, geringe Größe, aktive Unterstützung.
Nachteile: nur Schreiben (kann keine vorhandenen Dateien lesen).
2. xlsxio – Lesen und Schreiben von XLSX
xlsxio ist eine C-Bibliothek mit C++-Bindungen, die sowohl das Lesen als auch das Schreiben von XLSX-Dateien unterstützt. Sie basiert auf minizip und expat. Ideal für die Stream-Verarbeitung großer Dateien.
Installation:
git clone https://github.com/brechtsanders/xlsxio.gitcd xlsxiocmake .makesudo make installBeispiel: Daten aus Excel lesen
#include <xlsxio_read.h>
int main() { xlsxioreader reader = xlsxioread_open("data.xlsx"); if (reader) { xlsxioreadersheet sheet = xlsxioread_sheet_open(reader, NULL, XLSXIOREAD_SKIP_EMPTY_ROWS); 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(reader); } return 0;}Kompilierung: g++ -o read_excel read_excel.cpp -lxlsxio_read
Vorteile: bidirektionale Arbeit, Unterstützung großer Dateien.
Nachteile: eingeschränkte Formatierung (nur Zeichenfolgen und Zahlen).
3. OpenXLSX – Moderne C++17-Schnittstelle
OpenXLSX ist eine Header-only-Bibliothek für C++17, die eine objektorientierte API zum Lesen und Schreiben von XLSX bietet. Sie benötigt keine externen Abhängigkeiten außer der Standardbibliothek.
Installation:
git clone https://github.com/troldal/OpenXLSX.gitcd OpenXLSXmkdir build && cd buildcmake ..makesudo make installBeispiel: Datei mit Formatierung erstellen
#include <OpenXLSX/OpenXLSX.hpp>using namespace OpenXLSX;
int main() { Auch in der Bibliothek
Aufgabenwarteschlangen in Swift: GCD, OperationQueue und Swift Concurrency
Gorilla Mux für Go: Vollständige Anleitung mit Beispielen
Geolokalisierung und Karten in Kotlin: Bibliotheken, Werkzeuge und Beispiele
ErrorOr für C# (.NET): Komplette Anleitung mit Beispielen