Arbeiten mit Excel in C++: Bibliotheken und Werkzeuge
Das Arbeiten mit Excel-Tabellen (Format .xlsx) ist eine häufige Aufgabe in der angewandten Programmierung. C++ bietet keine integrierte Unterstützung für dieses Format, aber es gibt mehrere hochwertige Bibliotheken, die das Lesen, Erstellen und Bearbeiten von Excel-Dateien ermöglichen. In diesem Artikel betrachten wir vier Hauptansätze: libxlsxwriter, xlsxio, OpenXLSX und die Arbeit über die COM-Schnittstelle unter Windows.
1. libxlsxwriter — XLSX-Erstellung „im Handumdrehen“
libxlsxwriter ist eine C-Bibliothek mit Wrappern für C++. Sie ermöglicht die Erstellung vollwertiger XLSX-Dateien mit Unterstützung für Formatierung, Formeln, Diagramme und Zellverbünde. Der Hauptvorteil ist die Geschwindigkeit und der minimale Speicherverbrauch.
Installation
Laden Sie den Quellcode von GitHub herunter und bauen Sie ihn mit CMake:
git clone https://github.com/jmcnamara/libxlsxwriter.gitcd libxlsxwritermkdir build && cd buildcmake .. -DCMAKE_BUILD_TYPE=Releasemakesudo make installBeispiel: Erstellen einer Tabelle mit einer Formel
#include <xlsxwriter.h>
int main() { lxw_workbook *workbook = workbook_new("report.xlsx"); lxw_worksheet *worksheet = workbook_add_worksheet(workbook, "Verkäufe");
// Überschriften worksheet_write_string(worksheet, 0, 0, "Produkt", NULL); worksheet_write_string(worksheet, 0, 1, "Menge", NULL); worksheet_write_string(worksheet, 0, 2, "Preis", NULL); worksheet_write_string(worksheet, 0, 3, "Gesamt", NULL);
// Daten worksheet_write_string(worksheet, 1, 0, "Äpfel", NULL); worksheet_write_number(worksheet, 1, 1, 100, NULL); worksheet_write_number(worksheet, 1, 2, 2.5, NULL);
// Formel worksheet_write_formula(worksheet, 1, 3, "=B2*C2", NULL);
workbook_close(workbook); return 0;}Zum Kompilieren verwenden Sie:
g++ -o create_excel create_excel.cpp -lxlsxwriter2. xlsxio — Lesen und einfaches Schreiben
xlsxio ist eine leichtgewichtige C-Bibliothek, die auf das Lesen von XLSX-Dateien ausgerichtet ist. Sie unterstützt die Stream-Analyse, was die Verarbeitung großer Dateien ohne Laden in den Arbeitsspeicher ermöglicht.
Installation
git clone https://github.com/brechtsanders/xlsxio.gitcd xlsxiomkdir build && cd buildcmake ..makesudo make installBeispiel: Lesen von Daten aus 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 — Moderne C++-Schnittstelle
OpenXLSX ist eine Bibliothek in C++17, die eine objektorientierte API für die Arbeit mit XLSX bereitstellt. Sie unterstützt Lesen, Schreiben, Stile und die Arbeit mit mehreren Blättern.
Installation
git clone https://github.com/troldal/OpenXLSX.gitcd OpenXLSXmkdir build && cd buildcmake .. -DOPENXLSX_BUILD_TESTS=OFFmakesudo make installBeispiel: Schreiben mit Formatierung
#include <OpenXLSX/OpenXLSX.hpp>
int main() { using namespace OpenXLSX;
XLDocument doc; doc.create("formatted.xlsx"); auto wks = doc.workbook().worksheet("Sheet1");
// Schreiben mit Format XLCellValue v Auch in der Bibliothek
WebSocket-Bibliotheken für Node.js: ws, Socket.IO, uWS – ein vollständiger Überblick
Clikt: Leistungsstarkes CLI-Framework für Kotlin mit deklarativem Syntax
Hangfire für C# (.NET): Vollständiges Tutorial mit Beispielen
Prometheus-Metriken in Rust: Die Bibliotheken prometheus und metrics-exporter-prometheus
Logging für C++: Die besten Lösungen (spdlog, glog, P7)