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
libcurl für C++: Vollständige Anleitung mit Beispielen
CLI-Framework für JavaScript (Node.js): Commander.js – Erstellung von Konsolenanwendungen
PDF-Generierung in Java: Überblick über die besten Bibliotheken (iText, Apache PDFBox, OpenPDF)
Kingfisher für Swift: Vollständiger Leitfaden mit Beispielen
Symfony/Validator für PHP: Komplette Anleitung mit Beispielen