Erstellen Sie Excel Dateien in C++

Zuvor habe ich einen Beitrag darüber geschrieben, wie man Excel-Automatisierungsfunktionen implementiert und Excel-XLS/XLSX Dateien mit C# von Grund auf neu erstellt. Heute zeige ich Ihnen, wie Sie mit C++ Excel Arbeitsmappen erstellen, Daten in Excel-Arbeitsblätter einfügen, Formeln berechnen und Diagramme und Tabellen in Arbeitsblättern erstellen. Alle Funktionen zur Automatisierung von Tabellenkalkulationen werden von der C++ Excel-API unterstützt – Aspose.Cells for C++.

Aspose.Cells for C++ ist eine native C++ Bibliothek, mit der Sie Tabellenkalkulation Dokumente erstellen, lesen, parsen und konvertieren können, ohne Microsoft Excel zu benötigen. Es bietet einen vollständigen Satz von Excel-Automatisierungsfunktionen, die zum Generieren und Bearbeiten von XLS/XLSX-Tabellen verwendet werden können. In diesem Artikel behandeln wir die folgenden Funktionen zum Erstellen von Excel XLS/XLSX Dateien von Grund auf neu.

C++ Excel-Tabellenkalkulations-API – Installation

Sie können das vollständige Paket der Bibliotheksdateien von Aspose.Cells for C++ aus dem Abschnitt Downloads herunterladen. Das Paket enthält auch eine betriebsbereite Beispielkonsolenanwendung.

Erstellen Sie Excel Dateien (XLS/XLSX) mit C++

Lassen Sie uns zunächst eine einfache Excel XLSX Arbeitsmappe von Grund auf neu erstellen. Eine Arbeitsmappe besteht aus einem oder mehreren Arbeitsblättern und jedes Arbeitsblatt enthält die Daten in Form von Zeilen und Spalten. Um eine Excel-Tabelle zu erstellen, müssen Sie daher zuerst eine Arbeitsmappe erstellen und ihr dann Arbeitsblätter hinzufügen. Im Folgenden werden die Schritte zum Erstellen einer Excel Datei mit Aspose.Cells for C++ beschrieben.

Das folgende Codebeispiel zeigt, wie Sie eine Excel XLSX Datei mit C++ erstellen.

/*create a new workbook*/
intrusive_ptr<IWorkbook> wb = Factory::CreateIWorkbook();

/*get the first worksheet*/
intrusive_ptr<IWorksheetCollection> wsc = wb->GetIWorksheets();
intrusive_ptr<IWorksheet> ws = wsc->GetObjectByIndex(0);

/*get cell(0,0)*/
intrusive_ptr<ICells> cells = ws->GetICells();
intrusive_ptr<ICell> cell = cells->GetObjectByIndex(0, 0);

/*write "Hello World" to cell(0,0) of the first sheet*/
intrusive_ptr<String> str = new String("Hello World!");
cell->PutValue(str);

/*save this workbook to resultFile folder*/
wb->Save(resultPath->StringAppend(new String("workbook.xlsx")));

Excel Arbeitsmappe

Das Folgende ist der Screenshot der Excel Arbeitsmappe, die wir gerade erstellt haben.

Erstellen Sie Excel XLSX in C++

Hinzufügen von Daten zu einem Excel-Arbeitsblatt mit C++

Im vorherigen Beispiel haben wir gesehen, wie man eine einfache Excel Datei erstellt und mithilfe des Zeilen und Spaltenindex einen Wert in eine bestimmte Zelle einfügt. Meistens werden die Zellen in den Excel Arbeitsblättern jedoch anhand des Spaltenbuchstabens und der Zeilennummern wie A1, A2, B1 usw. identifiziert. Schauen wir uns also das Beispiel an, wie Daten mithilfe der Zellennamen in das Arbeitsblatt eingefügt werden. Der Prozess unterscheidet sich nur darin, der Zelle einen Wert hinzuzufügen, und alle anderen Schritte zum Erstellen der Excel Arbeitsmappe und der Arbeitsblätter sind gleich.

Das folgende Codebeispiel zeigt, wie Sie eine Excel XLSX Arbeitsmappe erstellen und Daten mit C++ darin einfügen.

//Pfad der ausgegebenen Excel Datei
StringPtr outputData = resultPath->StringAppend(new String("outputData.xlsx"));

//Excel-Eingabedatei lesen
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook();

//Zugriff auf das zweite Arbeitsblatt in der Excel Datei
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

//Hinzufügen eines Zeichenfolgenwerts zur Zelle
worksheet->GetICells()->GetObjectByIndex(new String("A1"))->PutValue("Hello World");

//Hinzufügen eines doppelten Werts zur Zelle
worksheet->GetICells()->GetObjectByIndex(new String("A2"))->PutValue(20.5);

//Hinzufügen eines ganzzahligen Werts zur Zelle
worksheet->GetICells()->GetObjectByIndex(new String("A3"))->PutValue(15);

//Hinzufügen eines booleschen Werts zur Zelle
worksheet->GetICells()->GetObjectByIndex(new String("A4"))->PutValue(true);

//Einstellen des Anzeigeformats des Datums
intrusive_ptr<ICell> cell = worksheet->GetICells()->GetObjectByIndex(new String("A5"));
intrusive_ptr<IStyle> style = cell->GetIStyle();
style->SetNumber(15);
cell->SetIStyle(style);

//Speichern Sie die Arbeitsmappe
workbook->Save(outputData);

Berechnen Sie Arbeitsmappenformeln mit C++

Das Festlegen von Formeln in Excel Arbeitsmappen ist eine erstaunliche Funktion, um Berechnungen mit Daten durchzuführen. Es macht es viel einfacher, komplexe Berechnungen mit den Daten effektiv und effizient durchzuführen. Im Folgenden sind die Schritte zum Festlegen und Berechnen von Formeln in Excel Arbeitsblättern aufgeführt.

Das folgende Codebeispiel zeigt, wie Formeln in einer Excel XLSX Arbeitsmappe mit C++ hinzugefügt und berechnet werden.

//Erstellen Sie eine neue Arbeitsmappe
intrusive_ptr<IWorkbook> wb = Factory::CreateIWorkbook();

//Holen Sie sich das erste Arbeitsblatt, das standardmäßig erstellt wird
intrusive_ptr<IWorksheet> ws = wb->GetIWorksheets()->GetObjectByIndex(0);

//Hinzufügen eines Werts zur Zelle "A1".
intrusive_ptr<ICell> cell = ws->GetICells()->GetObjectByIndex(new String("A1"));
cell->PutValue(5);

//Hinzufügen eines Werts zur Zelle "A2".
cell = ws->GetICells()->GetObjectByIndex(new String("A2"));
cell->PutValue(15);

//Hinzufügen eines Werts zur Zelle "A3".
cell = ws->GetICells()->GetObjectByIndex(new String("A3"));
cell->PutValue(25);

//SUM-Formel zur Zelle "A4" hinzufügen
cell = ws->GetICells()->GetObjectByIndex(new String("A4"));
cell->SetFormula(new String("=SUM(A1:A3)"));

//Berechnung der Ergebnisse von Formeln
wb->CalculateFormula();

//Holen Sie sich den berechneten Wert der Zelle "A4" und drucken Sie ihn auf der Konsole aus
cell = ws->GetICells()->GetObjectByIndex(new String("A4"));
StringPtr sCalcuInfo = new String(L"Calculated Value of Cell A4: ");
Console::WriteLine(sCalcuInfo->StringAppend(cell->GetStringValue()));

Erstellen Sie Tabellen in einem Excel-Arbeitsblatt mit C++

Die Tabellen in Excel Arbeitsblättern werden verwendet, um eine Gruppe von Daten zu organisieren, die sich in einem Bereich von Zellen befinden. Tabellen helfen Ihnen auch, verschiedene Arten von Listen in den Arbeitsblättern zu verwalten. Im Folgenden sind die Schritte zum Erstellen einer Tabelle im Excel-Arbeitsblatt aufgeführt.

  • Erstellen Sie eine neue Excel Arbeitsmappe mit der Klasse IWorkbook.
  • Greifen Sie auf das Standardarbeitsblatt im Objekt IWorksheet zu oder fügen Sie ein neues hinzu.
  • Fügen Sie Werte/Daten auf die gleiche Weise wie im vorherigen Beispiel in die Zellen ein.
  • Fügen Sie den Zellbereich mithilfe der Methode IWorksheet->GetIListObjects()->Add() zur Lists Sammlung des Arbeitsblatts hinzu.
  • Holen Sie sich die Liste in das Objekt IListObject.
  • Wenden Sie mithilfe der Methode IListObject->SetTableStyleType() Stile auf die Tabelle an.
  • Speichern Sie die Arbeitsmappe als .xlsx Datei.

Das folgende Codebeispiel zeigt, wie Sie mit C++ eine Tabelle in einer Excel XLSX Datei erstellen.

// Instanziieren Sie ein Workbook objekt
intrusive_ptr<IWorkbook>  workbook = Factory::CreateIWorkbook();

// Abrufen der Referenz des standardmäßigen (ersten) Arbeitsblatts
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

// Abrufen der Zellensammlung des Arbeitsblatts
intrusive_ptr<ICells> cells = worksheet->GetICells();

// Festlegen des Wertes für die Zellen
cells->GetObjectByIndex(new String("A1"))->PutValue("Employee");
cells->GetObjectByIndex(new String("B1"))->PutValue("Quarter");
cells->GetObjectByIndex(new String("C1"))->PutValue("Product");
cells->GetObjectByIndex(new String("D1"))->PutValue("Continent");
cells->GetObjectByIndex(new String("E1"))->PutValue("Country");
cells->GetObjectByIndex(new String("F1"))->PutValue("Sale");

cells->GetObjectByIndex(new String("A2"))->PutValue("David");
cells->GetObjectByIndex(new String("A3"))->PutValue("David");
cells->GetObjectByIndex(new String("A4"))->PutValue("David");
cells->GetObjectByIndex(new String("A5"))->PutValue("David");
cells->GetObjectByIndex(new String("A6"))->PutValue("James"); 

cells->GetObjectByIndex(new String("B2"))->PutValue(1);
cells->GetObjectByIndex(new String("B3"))->PutValue(2);
cells->GetObjectByIndex(new String("B4"))->PutValue(3);
cells->GetObjectByIndex(new String("B5"))->PutValue(4);
cells->GetObjectByIndex(new String("B6"))->PutValue(1); 

cells->GetObjectByIndex(new String("C2"))->PutValue("Maxilaku");
cells->GetObjectByIndex(new String("C3"))->PutValue("Maxilaku");
cells->GetObjectByIndex(new String("C4"))->PutValue("Chai");
cells->GetObjectByIndex(new String("C5"))->PutValue("Maxilaku");
cells->GetObjectByIndex(new String("C6"))->PutValue("Chang"); 

cells->GetObjectByIndex(new String("D2"))->PutValue("Asia");
cells->GetObjectByIndex(new String("D3"))->PutValue("Asia");
cells->GetObjectByIndex(new String("D4"))->PutValue("Asia");
cells->GetObjectByIndex(new String("D5"))->PutValue("Asia");
cells->GetObjectByIndex(new String("D6"))->PutValue("Europe"); 

cells->GetObjectByIndex(new String("E2"))->PutValue("China");
cells->GetObjectByIndex(new String("E3"))->PutValue("India");
cells->GetObjectByIndex(new String("E4"))->PutValue("Korea");
cells->GetObjectByIndex(new String("E5"))->PutValue("India");
cells->GetObjectByIndex(new String("E6"))->PutValue("France"); 

cells->GetObjectByIndex(new String("F2"))->PutValue(2000);
cells->GetObjectByIndex(new String("F3"))->PutValue(500);
cells->GetObjectByIndex(new String("F4"))->PutValue(1200);
cells->GetObjectByIndex(new String("F5"))->PutValue(1500);
cells->GetObjectByIndex(new String("F6"))->PutValue(500);  


// Hinzufügen eines neuen Listenobjekts zum Arbeitsblatt
worksheet->GetIListObjects()->Add(new String("A1"), new String("F6"), true);
intrusive_ptr<IListObject> listObject = worksheet->GetIListObjects()->GetObjectByIndex(0);

// Hinzufügen des Standardstils zur Tabelle
listObject->SetTableStyleType(TableStyleType_TableStyleMedium10);

// Summe anzeigen
listObject->SetShowTotals(true);

// Speichern der Excel Datei
workbook->Save(resultPath->StringAppend(new String("Excel_Table.xlsx")));

Excel Arbeitsmappe mit Tabelle

Tabelle in Excel in C++ erstellen

Erstellen Sie Diagramme in Excel-Tabellen mit C++

Diagramme in Excel-Tabellen werden verwendet, um die Daten mithilfe verschiedener Arten von grafischen Objekten zu visualisieren. Sie geben uns einen schnellen Einblick und ein schnelles Verständnis der Daten, insbesondere wenn die Datenmenge riesig ist. Aspose.Cells for C++ unterstützt eine Vielzahl von Diagrammen, darunter Sunburst, Treemap, Histogram, Pyramid, Bubble, Line und viele mehr. Im Folgenden finden Sie die Schritte zum Erstellen eines Diagramms in einer Excel Arbeitsmappe mit Aspose.Cells for C++.

  • Erstellen Sie eine neue Excel Arbeitsmappe.
  • Greifen Sie auf das gewünschte Arbeitsblatt im Objekt IWorksheet zu.
  • Fügen Sie dem Arbeitsblatt mit der methode IWorksheet->GetICarts()->Add() ein neues Diagramm hinzu, indem Sie den Typ des Diagramms übergeben.
  • Greifen Sie auf das neu hinzugefügte Diagramm im Objekt ICart zu.
  • Legen Sie die Datenquelle für das Diagramm mit der methode IChart->GetNISeries()->Add() fest.
  • Speichern Sie die Arbeitsmappe als .xlsx Datei.

Das folgende Codebeispiel zeigt, wie Sie mit C++ ein Diagramm in einer Excel XLSX Datei erstellen.

// Pfad der ausgegebenen Excel Datei
StringPtr outputChartTypePyramid = resultPath->StringAppend(new String("Exce_Pyramid_Chart.xlsx"));

// Erstellen Sie eine neue Arbeitsmappe
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook();

// Holen Sie sich das erste Arbeitsblatt, das standardmäßig erstellt wird
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

// Hinzufügen von Beispielwerten zu Zellen
worksheet->GetICells()->GetObjectByIndex(new String("A1"))->PutValue(50);
worksheet->GetICells()->GetObjectByIndex(new String("A2"))->PutValue(100);
worksheet->GetICells()->GetObjectByIndex(new String("A3"))->PutValue(150);
worksheet->GetICells()->GetObjectByIndex(new String("B1"))->PutValue(4);
worksheet->GetICells()->GetObjectByIndex(new String("B2"))->PutValue(20);
worksheet->GetICells()->GetObjectByIndex(new String("B3"))->PutValue(50);

// Hinzufügen eines Diagramms zum Arbeitsblatt
int chartIndex = worksheet->GetICharts()->Add(Aspose::Cells::Charts::ChartType::ChartType_Pyramid, 5, 0, 20, 8);

// Zugriff auf die Instanz des neu hinzugefügten Diagramms
intrusive_ptr<Aspose::Cells::Charts::IChart> chart = worksheet->GetICharts()->GetObjectByIndex(chartIndex);

// Hinzufügen von SeriesCollection (Diagrammdatenquelle) zum Diagramm im Bereich von „A1“-Zelle bis „B3“
chart->GetNISeries()->Add(new String("A1:B3"), true);

// Speichern der Excel Datei
workbook->Save(outputChartTypePyramid);

Excel Arbeitsmappe mit Diagramm

Diagramm in Excel in C++ erstellen

Fazit

In diesem Artikel haben wir behandelt, wie Sie MS Excel-Tabellen mit C++ von Grund auf neu erstellen. Der Artikel enthält außerdem Schritt-für-Schritt-Anleitungen und Codebeispiele zum Erstellen von Tabellen, Diagrammen und Berechnen von Formeln in Excel Arbeitsblättern. Weitere Informationen zu anderen erweiterten Funktionen im Zusammenhang mit der Excel-Automatisierung finden Sie in der Dokumentation von Aspose.Cells for C++.

Verwandter Artikel