Einleitung
Aspose.Cells FOSS für C++ ist eine Open-Source-Bibliothek zum Erstellen, Laden, Bearbeiten und Speichern von Excel .xlsx-Arbeitsmappen aus nativem C++-Code, ohne dass Microsoft Excel oder irgendeine COM-Automatisierung erforderlich ist. Sie lässt sich in einen CMake-basierten Build als Quellbibliothek integrieren – es gibt keine externe Laufzeitabhängigkeit, die über die C++-Standardbibliothek hinaus installiert oder gelinkt werden muss.
Die Bibliothek ist unter der MIT-Lizenz veröffentlicht und zielt auf C++17 ab. Sie wird mit add_subdirectory oder FetchContent aus einem Git-Clone gebaut, da sie nicht über einen Paketmanager wie vcpkg oder Conan verteilt wird. Die API-Oberfläche ist um ein Workbook organisiert, das ein WorksheetCollection besitzt, Arbeitsblätter, die ein Cells-Objekt für zellweisen Zugriff bereitstellen, und eine Style-Fassade für Schriftarten, Füllungen und Rahmen. Wenn Sie Backend-Dienste, Berichtsgeneratoren oder Datenexport-Pipelines in C++ erstellen und .xlsx-Dateien erzeugen oder lesen müssen, ohne Excel aufzurufen, bietet Ihnen diese Bibliothek einen nativen Weg dazu.
Aspose.Cells FOSS ist außerdem für .NET, Go, Java, Python, Rust und TypeScript verfügbar. Die C++-Bibliothek folgt dem gleichen Ansatz wie der Rest der Familie: ein XLSX-fokussiertes API, das auf dem tatsächlich Implementierten basiert, unter einer permissiven Lizenz.
Was enthalten ist
Arbeitsmappen- und Arbeitsblattstruktur
Ein Workbook beginnt mit einem Arbeitsblatt. Zusätzliche Blätter werden mit WorksheetCollection::Add erstellt, und vorhandene Blätter können über den Index oder den Namen über den Indexer der Sammlung erreicht werden. Jeder Worksheet stellt seine Zellen über GetCells() bereit.
#include "aspose/cells_foss/Workbook.h"
#include "aspose/cells_foss/Worksheet.h"
using namespace Aspose::Cells_FOSS;
Workbook workbook;
workbook.GetWorksheets()[0].SetName("Data");
workbook.GetWorksheets().Add("Summary");
Worksheet& data = workbook.GetWorksheets()["Data"];
data.GetCells()["A1"].PutValue("Product");
data.GetCells()["B1"].PutValue("Price");
Zellwerte, Formeln und Zahlenformate
Cell::PutValue hat Überladungen für Zeichenketten, Ganzzahlen, Gleitkommazahlen, Boolesche Werte und andere Wertarten, sodass keine manuelle String-Konvertierung erforderlich ist. SetFormula akzeptiert eine Formel mit oder ohne ein führendes = und normalisiert sie; GetType meldet dann ein CellValueType von Formula. Die Zahlenformatierung wird über Style::SetNumberFormat angewendet und wirkt sich nur auf den Anzeigetext aus, der von GetDisplayStringValue zurückgegeben wird — der zugrunde liegende gespeicherte Wert bleibt unverändert.
auto& sheet = workbook.GetWorksheets()[0];
auto cell = sheet.GetCells()["B2"];
cell.PutValue(1234.567);
auto style = cell.GetStyle();
style.SetNumberFormat("#,##0.00");
cell.SetStyle(style);
sheet.GetCells()["B3"].SetFormula("B2*2");
// GetFormula() now returns "=B2*2"; GetType() reports CellValueType::Formula
std::cout << cell.GetDisplayStringValue() << std::endl; // "1,234.57"
Gestaltung mit Schriftarten, Füllungen und Rahmen
Cell::GetStyle() und SetStyle() lesen und schreiben ein Style-Objekt, das Font, Borders und Füllungseinstellungen gruppiert. Farben werden mit Color::FromArgb erstellt und Füllmuster werden über FillPattern festgelegt.
Style headerStyle = sheet.GetCells()["A1"].GetStyle();
Font font;
font.SetBold(true);
font.SetColor(Color::FromArgb(255, 255, 255, 255));
headerStyle.SetFont(font);
headerStyle.SetPattern(FillPattern::Solid);
headerStyle.SetForegroundColor(Color::FromArgb(255, 34, 120, 212));
sheet.GetCells()["A1"].SetStyle(headerStyle);
Datenvalidierung und bedingte Formatierung
ValidationCollection::Add legt eine Validation-Regel für ein CellArea fest; das Setzen seines ValidationType auf List mit einem Formula1-Wert erzeugt ein Dropdown-Menü in der Zelle. ConditionalFormattingCollection::Add erstellt eine Formatierungsgruppe, die mit AddArea abgegrenzt und mit AddCondition gefüllt wird, wobei AddCondition ein FormatConditionType, ein OperatorType und ein oder zwei Formeln übernimmt.
int validationIndex = sheet.GetValidations().Add(CellArea::CreateCellArea("B1", "B3"));
auto validation = sheet.GetValidations()[validationIndex];
validation.SetType(ValidationType::List);
validation.SetFormula1("\"Open,Closed\"");
validation.SetShowError(true);
int cfIndex = sheet.GetConditionalFormattings().Add();
auto formatting = sheet.GetConditionalFormattings()[cfIndex];
formatting.AddArea(CellArea::CreateCellArea("C1", "C3"));
int conditionIndex = formatting.AddCondition(
FormatConditionType::CellValue, OperatorType::Between, "1", "9");
auto condition = formatting[conditionIndex];
auto conditionStyle = condition.GetStyle();
conditionStyle.SetPattern(FillPattern::Solid);
conditionStyle.SetForegroundColor(Color::FromArgb(255, 255, 199, 206));
condition.SetStyle(conditionStyle);
Seiteneinrichtung und Drucklayout
Worksheet::GetPageSetup() gibt ein PageSetup-Objekt zurück, das Papiergröße, Ausrichtung, Skalierung, Druckbereich und Titelzeilen/-spalten beim Drucken steuert. Werte werden bei der Zuweisung validiert — zum Beispiel löst ein SetScale-Aufruf außerhalb des zulässigen Bereichs eine CellsException aus.
auto& pageSetup = sheet.GetPageSetup();
pageSetup.SetOrientation(PageOrientationType::Landscape);
pageSetup.SetPaperSize(PaperSizeType::PaperA4);
pageSetup.SetFitToPagesWide(1);
pageSetup.SetFitToPagesTall(3);
pageSetup.SetPrintArea("$A$1:$D$20");
pageSetup.SetPrintTitleRows("$1:$2");
Schnellstart
Aspose.Cells FOSS für C++ wird nicht über einen Paketmanager bereitgestellt — klonen Sie das Repository und fügen Sie es zu Ihrem CMake-Projekt hinzu:
git clone https://github.com/aspose-cells-foss/Aspose.Cells-FOSS-for-Cpp.git
Fügen Sie die Bibliothek als Unterverzeichnis Ihres eigenen CMakeLists.txt hinzu und linken Sie gegen das aspose_cells_foss-Target:
add_subdirectory(path/to/Aspose.Cells-FOSS-for-Cpp/Aspose.Cells.Foss.Cpp)
target_link_libraries(MyApp PRIVATE aspose_cells_foss)
Erstellen Sie anschließend ein Arbeitsbuch, formatieren Sie es und speichern Sie es:
#include "aspose/cells_foss/Workbook.h"
#include "aspose/cells_foss/Worksheet.h"
#include "aspose/cells_foss/Cell.h"
#include "aspose/cells_foss/Style.h"
#include "aspose/cells_foss/Font.h"
#include "aspose/cells_foss/Color.h"
using namespace Aspose::Cells_FOSS;
int main() {
Workbook workbook;
Worksheet& sheet = workbook.GetWorksheets()[0];
sheet.SetName("Products");
sheet.GetCells()["A1"].PutValue("Product");
sheet.GetCells()["B1"].PutValue("Price");
sheet.GetCells()["A2"].PutValue("Apple");
sheet.GetCells()["B2"].PutValue(2.99);
sheet.GetCells()["A3"].PutValue("Orange");
sheet.GetCells()["B3"].PutValue(1.99);
sheet.GetCells()["B4"].SetFormula("SUM(B2:B3)");
Style header = sheet.GetCells()["A1"].GetStyle();
Font font;
font.SetBold(true);
header.SetFont(font);
sheet.GetCells()["A1"].SetStyle(header);
workbook.Save("products.xlsx");
return 0;
}
Unterstützte Formate
| Format | Erweiterung | Lesen | Schreiben |
|---|---|---|---|
| XLSX | .xlsx | ✓ | ✓ |
XLSX ist das einzige Format, das die aktuelle Version lesen und schreiben kann. Die Datei- und Stream-Konstruktoren von Workbook laden .xlsx-Daten, und Save schreibt sie wieder zurück; die Aufzählungen LoadFormat und SaveFormat steuern die explizite Formatwahl bei diesen Aufrufen.
Open Source & Lizenzierung
Aspose.Cells FOSS für C++ ist unter der MIT-Lizenz veröffentlicht. Der vollständige Quellcode ist verfügbar auf GitHub, und die Lizenz erlaubt kommerzielle Nutzung, Modifikation und Weiterverteilung.