Wie man ein Spreadsheet-Datenmodell in C++ erstellt und füllt

Wie man ein Spreadsheet-Datenmodell in C++ erstellt und füllt

Dieser Leitfaden zeigt, wie man ein Arbeitsmappe erstellt, Zellen mit Werten und Formeln füllt, Stile anwendet und es als Tabellenkalkulationsdatei speichert, wobei die Aspose.Cells FOSS für C++ Bibliothek verwendet wird. Die Kernklassen sind Workbook, Worksheet, Cell und Style.

Schritt-für-Schritt-Anleitung

Schritt 1: Build einrichten

Fügen Sie die Cells FOSS Bibliothek zu Ihrem CMake-Projekt hinzu und verlinken Sie das Aspose.Cells.Foss.Cpp Ziel:

cmake_minimum_required(VERSION 3.15)
project(CreateSpreadsheet CXX)
set(CMAKE_CXX_STANDARD 17)

add_subdirectory(path/to/Aspose.Cells-FOSS-for-Cpp)
add_executable(CreateSpreadsheet main.cpp)
target_link_libraries(CreateSpreadsheet PRIVATE Aspose.Cells.Foss.Cpp)

Schritt 2: Header einbinden und Namespace setzen

Binden Sie die Klassen-spezifischen Header von aspose/cells_foss/ für jede von Ihnen verwendete Klasse ein (Workbook.h, Worksheet.h, Cell.h, Style.h, Font.h, Color.h, CellArea.h) und öffnen Sie anschließend den Aspose::Cells_FOSS Namespace:

using namespace Aspose::Cells_FOSS;

Schritt 3: Eine Arbeitsmappe erstellen und das Blatt benennen

Instanziieren Sie Workbook, rufen Sie das erste Arbeitsblatt über GetWorksheets()[0] ab und setzen Sie dessen Anzeigenamen:

int main() {
    Workbook workbook;
    Worksheet& sheet = workbook.GetWorksheets()[0];
    sheet.SetName("Sales");
    return 0;
}

Schritt 4: Zellwerte hinzufügen

Rufen Sie GetCells()["A1"].PutValue() auf, um Textzeichenketten, numerische Werte und Booleans in einzelne Zellen anhand ihrer Adresse zu schreiben:

sheet.GetCells()["A1"].PutValue("Product");
sheet.GetCells()["B1"].PutValue("Price");
sheet.GetCells()["A2"].PutValue("Widget");
sheet.GetCells()["B2"].PutValue(9.99);
sheet.GetCells()["A3"].PutValue("Gadget");
sheet.GetCells()["B3"].PutValue(24.99);

Schritt 5: Eine Formel festlegen

Rufen Sie SetFormula() für eine Zelle auf, um eine Excel-kompatible Formelzeichenkette zu speichern; die Formel wird von Excel ausgewertet, wenn die Datei geöffnet wird:

sheet.GetCells()["B4"].SetFormula("=SUM(B2:B3)");

Schritt 6: Zellformatierung anwenden

Holen Sie den Stil mit Cell::GetStyle(), ändern Sie ihn und wenden Sie ihn mit Cell::SetStyle(style) an:

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);
sheet.GetCells()["B1"].SetStyle(headerStyle);

Schritt 7: Zellen zusammenführen

Verwenden Sie Cells::Merge, um einen Bereich zu einer einzelnen Zelle zu kombinieren:

CellArea titleArea = CellArea::CreateCellArea("A1", "B1");
sheet.GetCells().Merge(0, 0, 1, 2);

Schritt 8: Arbeitsmappe speichern

Rufen Sie workbook.Save() mit einem Dateinamen auf, um die Tabelle als XLSX-Datei zu schreiben, und rufen Sie anschließend Dispose() auf, um Ressourcen freizugeben:

workbook.Save("sales.xlsx");
workbook.Dispose();

Häufige Probleme und Lösungen

Stil nach dem Speichern nicht angewendet Immer aufrufen Cell::SetStyle(style) nach dem Ändern des Style-Objekts. Das direkte Modifizieren des zurückgegebenen Styles wendet die Änderungen nicht an; Sie müssen ihn explizit zurücksetzen.

Formel als Zeichenkettenliteral gespeichert Verwenden SetFormula("=SUM(...)") not PutValue("=SUM(...)"). PutValue behandelt das Argument als literal Zeichenkette, nicht als Formel.

Zusammengeführte Zelle wird nicht korrekt dargestellt Stellen Sie sicher, dass die Merge-Parameter (row, column, rowCount, columnCount) den gewünschten Bereich korrekt abdecken. Überlappende Zusammenführungen werden nicht unterstützt.

Arbeitsmappe hat nach der Konstruktion keine Tabellenblätter Ein Standardblatt wird immer erstellt von Workbook(). Call GetWorksheets()[0] um darauf zuzugreifen.

Dispose nicht aufgerufen Rufen Sie immer auf workbook.Dispose() um Ressourcen freizugeben, insbesondere in langfristig laufenden Anwendungen.

Häufig gestellte Fragen

Kann ich mehrere Arbeitsblätter zu einer Arbeitsmappe hinzufügen?

Ja. Verwenden Sie Workbook::GetWorksheets(), um auf die Sammlung zuzugreifen und Arbeitsblätter programmgesteuert hinzuzufügen. Stellen Sie sicher, dass jedes Arbeitsblatt einen eindeutigen Namen hat, indem Sie Workbook::EnsureUniqueSheetName() verwenden.

Wie lege ich ein Zahlenformat für eine Zelle fest?

Verwenden Sie Style::SetNumberFormat(format) bevor Sie Cell::SetStyle(style) aufrufen. Formatzeichenfolgen folgen der standardmäßigen Excel-Zahlenformatsyntax.

Kann ich denselben Stil auf mehrere Zellen anwenden?

Ja. Holen Sie den Stil einmal, ändern Sie ihn und rufen Sie dann SetStyle(style) für jede Zielzelle auf.

Wird die Formel beim Speichern ausgewertet?

Nein. Die Formelauswertung erfolgt in Excel oder einem kompatiblen Reader, wenn die Datei geöffnet wird. Die Bibliothek schreibt die Formelzeichenkette in die Zelle.

Wie viele Zeilen und Spalten kann ein Arbeitsblatt enthalten?

Jedes Arbeitsblatt speichert Daten über sein komplettes Raster aus Zeilen und Spalten hinweg, gemäß den Standardabmessungen von Tabellenkalkulationen.

Siehe auch

 Deutsch