Pivot Tabellen ordnen Daten neu an, um sie sinnvoll darzustellen. Sie bieten verschiedene Sortieroptionen und liefern Summen, Durchschnittswerte oder andere Statistiken, indem sie Daten zusammenfassen. Es ist ein unverzichtbares Werkzeug für die Datenanalyse und ein grundlegender Bestandteil von MS Excel. Möglicherweise befinden Sie sich in Szenarien, in denen Sie Pivot Tabellen programmgesteuert erstellen und bearbeiten müssen. Zu diesem Zweck lernen Sie in diesem Artikel, wie Sie mit Pivot Tabellen in Excel Dateien mit C++ arbeiten.
- C++-API zum Arbeiten mit Pivot Tabellen in Excel Dateien
- Erstellen Sie eine Pivot Tabelle in einer Excel Datei mit C++
- Pivot Tabelle in einer Excel Datei mit C++ sortieren
- Zeilen in einer Pivot Tabelle mit C++ ausblenden
- Bearbeiten Sie Pivot Tabellendaten mit C++
C++-API zum Arbeiten mit Pivot Tabellen in Excel Dateien
Aspose.Cells for C++ ist eine native C++ Bibliothek, mit der Sie Excel Dateien erstellen, lesen und aktualisieren können, ohne dass Microsoft Excel installiert sein muss. Die API unterstützt auch das Arbeiten mit Pivot Tabellen in Excel Dateien. Sie können die API entweder über NuGet installieren oder direkt aus dem Abschnitt Downloads herunterladen.
PM> Install-Package Aspose.Cells.Cpp
Erstellen Sie eine Pivot Tabelle in einer Excel Datei mit C++
Im folgenden Beispiel erstellen wir eine neue Excel Datei, fügen Beispieldaten darin ein und erstellen eine Pivot Tabelle. Die in diesem Beispiel generierte Datei wird als Quelldatei für andere Beispiele verwendet. Im Folgenden sind die Schritte zum Erstellen einer Pivot Tabelle in einer Excel Datei aufgeführt.
- Erstellen Sie zunächst eine Instanz der Klasse IWorkbook, um die neue Excel Datei darzustellen.
- Greifen Sie mit der methode IWorkbook->GetIWorksheets()->GetObjectByIndex (Aspose::Cells::Systems::Int32 index) auf das Arbeitsblatt zu, in das Sie die Pivot Tabelle einfügen möchten.
- Fügen Sie Beispieldaten für die Pivot Tabelle hinzu.
- Pivot Tabelle mit IWorksheet->GetIPivotTables()->Add(intrusiveptrAspose::Cells::Systems::String sourceData, intrusiveptrAspose::Cells::Systems::String destCellName, intrusiveptrAspose::Cells::Systems::String tableName) methode.
- Um auf die Pivot Tabelle zuzugreifen, verwenden Sie die Methode IWorksheet->GetIPivotTables()->GetObjectByIndex(Aspose::Cells::Systems::Int32 index).
- Bearbeiten Sie die Felder und legen Sie den Stil der Pivot Tabelle fest.
- Speichern Sie abschließend die Excel Datei mit IWorkbook->Save (intrusiveptrAspose::Cells::Systems::String fileName) methode.
Der folgende Beispielcode zeigt, wie Sie mit C++ eine Pivot Tabelle in einer Excel Datei erstellen.
// Quellverzeichnispfad.
StringPtr srcDir = new String("SourceDirectory\\");
// Verzeichnispfad ausgeben.
StringPtr outDir = new String("OutputDirectory\\");
// Erstellen Sie eine Instanz der IWorkbook Klasse
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook();
// Greifen Sie auf das erste Arbeitsblatt zu
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);
// Fügen Sie Quelldaten für die Pivot Tabelle hinzu
intrusive_ptr<String> str = new String("Fruit");
worksheet->GetICells()->GetObjectByIndex(new String("A1"))->PutValue(str);
str = new String("Quantity");
worksheet->GetICells()->GetObjectByIndex(new String("B1"))->PutValue(str);
str = new String("Price");
worksheet->GetICells()->GetObjectByIndex(new String("C1"))->PutValue(str);
str = new String("Apple");
worksheet->GetICells()->GetObjectByIndex(new String("A2"))->PutValue(str);
str = new String("Orange");
worksheet->GetICells()->GetObjectByIndex(new String("A3"))->PutValue(str);
str = new String("Mango");
worksheet->GetICells()->GetObjectByIndex(new String("A4"))->PutValue(str);
worksheet->GetICells()->GetObjectByIndex(new String("B2"))->PutValue(3);
worksheet->GetICells()->GetObjectByIndex(new String("B3"))->PutValue(4);
worksheet->GetICells()->GetObjectByIndex(new String("B4"))->PutValue(4);
worksheet->GetICells()->GetObjectByIndex(new String("C2"))->PutValue(2);
worksheet->GetICells()->GetObjectByIndex(new String("C3"))->PutValue(1);
worksheet->GetICells()->GetObjectByIndex(new String("C4"))->PutValue(4);
// Pivot Tabelle hinzufügen
int idx = worksheet->GetIPivotTables()->Add(new String("A1:C4"), new String("E5"), new String("MyPivotTable"));
// Greifen Sie auf die erstellte Pivot Tabelle zu
intrusive_ptr<IPivotTable> pivotTable = worksheet->GetIPivotTables()->GetObjectByIndex(idx);
// Bearbeiten Sie Zeilen, Spalten und Datenfelder von Pivot Tabellen
pivotTable->AddFieldToArea(PivotFieldType_Row, pivotTable->GetIBaseFields()->GetObjectByIndex(0));
pivotTable->AddFieldToArea(PivotFieldType_Data, pivotTable->GetIBaseFields()->GetObjectByIndex(1));
pivotTable->AddFieldToArea(PivotFieldType_Data, pivotTable->GetIBaseFields()->GetObjectByIndex(2));
pivotTable->AddFieldToArea(PivotFieldType_Column, pivotTable->GetIDataField());
// Legen Sie den Pivot Tabellenstil fest
pivotTable->SetPivotTableStyleType(PivotTableStyleType_PivotTableStyleMedium9);
// Speichern Sie die ausgegebene Excel Datei
workbook->Save(outDir->StringAppend(new String("outputCreatePivotTable.xlsx")));
Pivot Tabelle in einer Excel Datei mit C++ sortieren
Im folgenden Beispiel sortieren wir die erste Spalte der Pivot Tabelle in absteigender Reihenfolge. Im Folgenden sind die Schritte zum Sortieren von Daten in einer Pivot Tabelle aufgeführt.
- Laden Sie zunächst die Beispiel-Excel Datei mit der Klasse IWorkbook.
- Rufen Sie das Arbeitsblatt mit der Pivot Tabelle mit der methode IWorkbook->GetIWorksheets()->GetObjectByIndex (Aspose::Cells::Systems::Int32 index) ab.
- Greifen Sie mit der methode IWorksheet->GetIPivotTables()->GetObjectByIndex(Aspose::Cells::Systems::Int32 index) auf die Pivot Tabelle zu.
- Rufen Sie das Zeilenfeld ab und sortieren Sie die Pivot Tabelle mithilfe der Methoden IPivotField->SetAutoSort(bool value) und IPivotField->SetAscendSort(bool value).
- Aktualisieren Sie den Inhalt der Pivot Tabelle und berechnen Sie die Daten mit den Methoden IPivotTable->RefreshData() bzw. IPivotTable->CalculateData().
- Speichern Sie abschließend die Excel Datei mit IWorkbook->Save (intrusiveptrAspose::Cells::Systems::String fileName) methode.
Der folgende Beispielcode zeigt, wie eine Pivot Tabelle in einer Excel Datei mit C++ sortiert wird.
// Quellverzeichnispfad.
StringPtr srcDir = new String("SourceDirectory\\");
// Verzeichnispfad ausgeben.
StringPtr outDir = new String("OutputDirectory\\");
// Pfad der Eingabe-Excel Datei
StringPtr samplePivotTable = srcDir->StringAppend(new String("SamplePivotTable.xlsx"));
// Pfad der ausgegebenen Excel Datei
StringPtr outputSortedPivotTable = outDir->StringAppend(new String("outputSortedPivotTable.xlsx"));
// Laden Sie die Beispiel-Excel Datei
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook(samplePivotTable);
// Greifen Sie auf das erste Arbeitsblatt zu
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);
// Greifen Sie auf die Pivot Tabelle zu
intrusive_ptr<IPivotTable> pivotTable = worksheet->GetIPivotTables()->GetObjectByIndex(0);
// Legen Sie die Sortierung der Pivot Tabelle fest
pivotTable->AddFieldToArea(PivotFieldType_Row, 0);
intrusive_ptr<IPivotField> pivotField = pivotTable->GetIRowFields()->GetObjectByIndex(0);
pivotField->SetAutoSort(true);
pivotField->SetAscendSort(false);
// Aktualisieren und berechnen Sie die Daten in der Pivot Tabelle.
pivotTable->RefreshData();
pivotTable->CalculateData();
// Speichern Sie die ausgegebene Excel Datei
workbook->Save(outputSortedPivotTable);
Zeilen in einer Pivot Tabelle mit C++ ausblenden
Mit Aspose.Cells for C++ API können Sie auch die Zeilen in einer Pivot Tabelle ausblenden. Im folgenden Beispiel blenden wir die Zeile mit der Zeilenbeschriftung „Orange“ aus. Im Folgenden sind die Schritte zum Ausblenden von Zeilen in einer Pivot Tabelle aufgeführt.
- Laden Sie zunächst die Excel-Beispieldatei mit der Klasse IWorkbook.
- Rufen Sie das Arbeitsblatt mit der Pivot Tabelle mit der methode IWorkbook->GetIWorksheets()->GetObjectByIndex (Aspose::Cells::Systems::Int32 index) ab.
- Greifen Sie mit der methode IWorksheet->GetIPivotTables()->GetObjectByIndex(Aspose::Cells::Systems::Int32 index) auf die Pivot Tabelle zu.
- Rufen Sie den Datenkörperbereich der Pivot Tabelle mit der methode IPivotTable->GetIDataBodyRange() ab.
- Durchlaufen Sie die Zeilen der Pivot Tabelle und blenden Sie die Zeilen aus, die Ihren Kriterien entsprechen.
- Aktualisieren Sie den Inhalt der Pivot Tabelle und berechnen Sie die Daten mit den Methoden IPivotTable->RefreshData() bzw. IPivotTable->CalculateData().
- Speichern Sie abschließend die Excel Datei mit IWorkbook->Save (intrusiveptrAspose::Cells::Systems::String fileName) methode.
Der folgende Beispielcode zeigt, wie Zeilen in einer Pivot Tabelle mit C++ ausgeblendet werden.
// Quellverzeichnispfad.
StringPtr srcDir = new String("SourceDirectory\\");
// Verzeichnispfad ausgeben.
StringPtr outDir = new String("OutputDirectory\\");
// Pfad der Eingabe-Excel Datei
StringPtr samplePivotTable = srcDir->StringAppend(new String("SamplePivotTable.xlsx"));
// Pfad der ausgegebenen Excel Datei
StringPtr outputHiddenRowPivotTable = outDir->StringAppend(new String("outputHiddenRowPivotTable.xlsx"));
// Laden Sie die Beispiel-Excel Datei
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook(samplePivotTable);
// Greifen Sie auf das erste Arbeitsblatt zu
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);
// Greifen Sie auf die Pivot Tabelle zu
intrusive_ptr<IPivotTable> pivotTable = worksheet->GetIPivotTables()->GetObjectByIndex(0);
// Rufen Sie den Körperbereich der Pivot Tabelle ab
intrusive_ptr<ICellArea> dataBodyRange = pivotTable->GetIDataBodyRange();
// Startzeile der Pivot Tabelle
int currentRow = 5;
// Endzeile der Pivot Tabelle
int rowsUsed = dataBodyRange->GetendRow();
// Iterieren Sie durch die Zeilen, vergleichen Sie den Zellenwert und blenden Sie die Zeilen aus.
for (int i = currentRow; i < rowsUsed; i++) {
intrusive_ptr<ICell> cell = worksheet->GetICells()->GetICell(i, 4);
if (strcmp(cell->GetStringValue()->charValue(), "Orange") == 0) {
worksheet->GetICells()->HideRow(i);
}
}
// Aktualisieren und berechnen Sie die Daten in der Pivot Tabelle.
pivotTable->RefreshData();
pivotTable->CalculateData();
// Speichern Sie die ausgegebene Excel Datei
workbook->Save(outputHiddenRowPivotTable);
Bearbeiten Sie Pivot Tabellendaten mit C++
Sie können auch die Daten einer vorhandenen Pivot Tabelle mit Aspose.Cells für die C++-API bearbeiten. Im folgenden Beispiel ersetzen wir den Text „Apple“ in Zelle „A2“ durch „Orange“ und geben die Änderung in der Pivot Tabelle wieder. Im Folgenden sind die Schritte zum Bearbeiten von Pivot Tabellendaten aufgeführt.
- Laden Sie zunächst die Beispiel-Excel Datei mit der Klasse IWorkbook.
- Rufen Sie das Arbeitsblatt mit den Pivot Tabellendaten mit der methode IWorkbook->GetIWorksheets()->GetObjectByIndex (Aspose::Cells::Systems::Int32 index) ab.
- Aktualisieren Sie die Daten der Pivot Tabelle entsprechend Ihren Anforderungen.
- Um auf die Pivot Tabelle zuzugreifen, verwenden Sie die Methode IWorksheet->GetIPivotTables()->GetObjectByIndex(Aspose::Cells::Systems::Int32 index).
- Aktualisieren Sie den Inhalt der Pivot Tabelle und berechnen Sie die Daten mit den Methoden IPivotTable->RefreshData() bzw. IPivotTable->CalculateData().
- Speichern Sie abschließend die Excel Datei mit IWorkbook->Save (intrusiveptrAspose::Cells::Systems::String fileName) methode.
Der folgende Beispielcode zeigt, wie die Daten einer Pivot Tabelle mit C++ aktualisiert werden.
// Quellverzeichnispfad.
StringPtr srcDir = new String("SourceDirectory\\");
// Verzeichnispfad ausgeben.
StringPtr outDir = new String("OutputDirectory\\");
// Pfad der Eingabe-Excel Datei
StringPtr samplePivotTable = srcDir->StringAppend(new String("SamplePivotTable.xlsx"));
// Pfad der ausgegebenen Excel Datei
StringPtr outputManipulatePivotTable = outDir->StringAppend(new String("outputManipulatePivotTable.xlsx"));
// Laden Sie die Beispiel-Excel Datei
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook(samplePivotTable);
// Greifen Sie auf das erste Arbeitsblatt zu
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);
// Ändern Sie den Wert der Zelle A2, die sich in den Quelldaten der Pivot Tabelle befindet
intrusive_ptr<String> str = new String("Orange");
worksheet->GetICells()->GetObjectByIndex(new String("A2"))->PutValue(str);
// Greifen Sie auf die Pivot Tabelle zu, aktualisieren und berechnen Sie sie
intrusive_ptr<IPivotTable> pivotTable = worksheet->GetIPivotTables()->GetObjectByIndex(0);
pivotTable->RefreshData();
pivotTable->CalculateData();
// Speichern Sie die ausgegebene Excel Datei
workbook->Save(outputManipulatePivotTable);
Holen Sie sich eine kostenlose Lizenz
Um die API ohne Evaluierungseinschränkungen zu testen, können Sie eine kostenlose temporäre Lizenz anfordern.
Fazit
In diesem Artikel haben Sie gelernt, wie Sie mit Pivot Tabellen in Excel Dateien mit C++ arbeiten. Insbesondere haben Sie gelernt, wie Sie eine Pivot Tabelle erstellen und die Daten in einer Pivot Tabelle mit C++ sortieren, ausblenden und aktualisieren. Aspose.Cells for C++ ist eine umfangreiche API, die eine Reihe zusätzlicher Funktionen für die Arbeit mit Excel Dateien bietet. Sie können die API im Detail erkunden, indem Sie die offizielle Dokumentation besuchen. Bei Fragen können Sie uns gerne in unserem kostenlosen Support-Forum erreichen.