Pivottabeller arrangerar om data för att representera dem på ett meningsfullt sätt. De tillhandahåller olika sorteringsalternativ och ger summor, medelvärden eller annan statistik genom att gruppera data tillsammans. Det är ett viktigt verktyg för dataanalys och är en grundläggande del av MS Excel. Du kan hamna i scenarier där du behöver skapa och manipulera pivottabeller programmatiskt. För detta ändamål kommer den här artikeln att lära dig hur du arbetar med pivottabeller i Excel-filer med C++.
- C++ API för att arbeta med pivottabeller i Excel-filer
- Skapa en pivottabell i en Excel-fil med C++
- Sortera pivottabell i en Excel-fil med C++
- Göm rader i en pivottabell med C++
- Manipulera pivottabelldata med C++
C++ API för att arbeta med pivottabeller i Excel-filer
Aspose.Cells for C++ är ett inbyggt C++-bibliotek som låter dig skapa, läsa och uppdatera Excel-filer utan att Microsoft Excel behöver installeras. API:et stöder även arbete med pivottabeller i Excel-filer. Du kan antingen installera API:t genom NuGet eller ladda ner det direkt från avsnittet Nedladdningar.
PM> Install-Package Aspose.Cells.Cpp
Skapa en pivottabell i en Excel-fil med C++
I följande exempel kommer vi att skapa en ny Excel-fil, infoga exempeldata i den och skapa en pivottabell. Filen som genereras i detta exempel kommer att användas som källfil för andra exempel. Följande är stegen för att skapa en pivottabell i en Excel-fil.
- Skapa först en instans av klassen IWorkbook för att representera den nya Excel-filen.
- Gå till kalkylbladet där du vill infoga pivottabellen med metoden IWorkbook->GetIWorksheets()->GetObjectByIndex (Aspose::Cells::Systems::Int32 index).
- Lägg till exempeldata för pivottabellen.
- Lägg till pivottabell med hjälp av IWorksheet->GetIPivotTables()->Add(intrusiveptrAspose::Cells::Systems::String sourceData, intrusiveptrAspose::Cells::Systems::String destCellName, intrusiveptrAspose::Cells::Systems::String tableName) metod.
- För att komma åt pivottabellen, använd metoden IWorksheet->GetIPivotTables()->GetObjectByIndex(Aspose::Cells::Systems::Int32 index).
- Manipulera fälten och ställ in stilen på pivottabellen.
- Slutligen, spara Excel-filen med hjälp av IWorkbook->Spara (intrusiveptrAspose::Cells::Systems::String filnamn) metod.
Följande exempelkod visar hur man skapar en pivottabell i en Excel-fil med C++.
// Källkatalogens sökväg.
StringPtr srcDir = new String("SourceDirectory\\");
// Utdatakatalogsökväg.
StringPtr outDir = new String("OutputDirectory\\");
// Skapa en instans av IWorkbook-klassen
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook();
// Öppna det första arbetsbladet
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);
// Lägg till källdata för pivottabellen
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);
// Lägg till pivottabell
int idx = worksheet->GetIPivotTables()->Add(new String("A1:C4"), new String("E5"), new String("MyPivotTable"));
// Åtkomst till skapad pivottabell
intrusive_ptr<IPivotTable> pivotTable = worksheet->GetIPivotTables()->GetObjectByIndex(idx);
// Manipulera pivottabellrader, kolumner och datafält
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());
// Ställ in pivottabellstilen
pivotTable->SetPivotTableStyleType(PivotTableStyleType_PivotTableStyleMedium9);
// Spara den utgående excel-filen
workbook->Save(outDir->StringAppend(new String("outputCreatePivotTable.xlsx")));
Sortera pivottabell i en Excel-fil med C++
I följande exempel kommer vi att sortera den första kolumnen i pivottabellen i fallande ordning. Följande är stegen för att sortera data i en pivottabell.
- Ladda först in exemplet på Excel-filen med klassen IWorkbook.
- Hämta kalkylbladet som innehåller pivottabellen med metoden IWorkbook->GetIWorksheets()->GetObjectByIndex (Aspose::Cells::Systems::Int32 index).
- Gå till pivottabellen med metoden IWorksheet->GetIPivotTables()->GetObjectByIndex(Aspose::Cells::Systems::Int32 index).
- Hämta radfält och sortera pivottabellen med metoderna IPivotField->SetAutoSort(bool value) och IPivotField->SetAscendSort(bool value).
- Uppdatera innehållet i pivottabellen och beräkna data med metoderna IPivotTable->RefreshData() respektive IPivotTable->CalculateData().
- Slutligen, spara Excel-filen med hjälp av IWorkbook->Spara (intrusiveptrAspose::Cells::Systems::String filnamn) metod.
Följande exempelkod visar hur man sorterar en pivottabell i en Excel-fil med C++.
// Källkatalogens sökväg.
StringPtr srcDir = new String("SourceDirectory\\");
// Utdatakatalogsökväg.
StringPtr outDir = new String("OutputDirectory\\");
// Sökvägen till indata excel-filen
StringPtr samplePivotTable = srcDir->StringAppend(new String("SamplePivotTable.xlsx"));
// Sökväg för utdata excel-filen
StringPtr outputSortedPivotTable = outDir->StringAppend(new String("outputSortedPivotTable.xlsx"));
// Ladda excel-exempelfilen
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook(samplePivotTable);
// Öppna det första arbetsbladet
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);
// Gå till pivottabellen
intrusive_ptr<IPivotTable> pivotTable = worksheet->GetIPivotTables()->GetObjectByIndex(0);
// Ställ in pivottabellsortering
pivotTable->AddFieldToArea(PivotFieldType_Row, 0);
intrusive_ptr<IPivotField> pivotField = pivotTable->GetIRowFields()->GetObjectByIndex(0);
pivotField->SetAutoSort(true);
pivotField->SetAscendSort(false);
// Uppdatera och beräkna data i pivottabellen.
pivotTable->RefreshData();
pivotTable->CalculateData();
// Spara den utgående excel-filen
workbook->Save(outputSortedPivotTable);
Göm rader i en pivottabell med C++
Med Aspose.Cells for C++ API kan du även dölja raderna i en pivottabell. I följande exempel kommer vi att dölja raden med radetiketten “Orange”. Följande är stegen för att dölja rader i en pivottabell.
- Ladda först in exemplet på Excel-filen med klassen IWorkbook.
- Hämta kalkylbladet som innehåller pivottabellen med metoden IWorkbook->GetIWorksheets()->GetObjectByIndex (Aspose::Cells::Systems::Int32 index).
- Öppna pivottabellen med metoden IWorksheet->GetIPivotTables()->GetObjectByIndex(Aspose::Cells::Systems::Int32 index).
- Hämta pivottabellens datakroppsintervall med metoden IPivotTable->GetIDataBodyRange().
- Iterera genom raderna i pivottabellen och dölj raderna som uppfyller dina kriterier.
- Uppdatera innehållet i pivottabellen och beräkna data med metoderna IPivotTable->RefreshData() respektive IPivotTable->CalculateData().
- Slutligen, spara Excel-filen med hjälp av IWorkbook->Spara (intrusiveptrAspose::Cells::Systems::String filnamn) metod.
Följande exempelkod visar hur man döljer rader i en pivottabell med C++.
// Källkatalogens sökväg.
StringPtr srcDir = new String("SourceDirectory\\");
// Utdatakatalogsökväg.
StringPtr outDir = new String("OutputDirectory\\");
// Sökvägen till indata excel-filen
StringPtr samplePivotTable = srcDir->StringAppend(new String("SamplePivotTable.xlsx"));
// Sökväg för utdata excel-filen
StringPtr outputHiddenRowPivotTable = outDir->StringAppend(new String("outputHiddenRowPivotTable.xlsx"));
// Ladda excel-exempelfilen
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook(samplePivotTable);
// Öppna det första arbetsbladet
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);
// Gå till pivottabellen
intrusive_ptr<IPivotTable> pivotTable = worksheet->GetIPivotTables()->GetObjectByIndex(0);
// Skaffa pivotbordskroppar
intrusive_ptr<ICellArea> dataBodyRange = pivotTable->GetIDataBodyRange();
// Pivottabellens startrad
int currentRow = 5;
// Pivottabellens slutrad
int rowsUsed = dataBodyRange->GetendRow();
// Iterera genom raderna, jämför cellvärdet och dölj raderna.
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);
}
}
// Uppdatera och beräkna data i pivottabellen.
pivotTable->RefreshData();
pivotTable->CalculateData();
// Spara den utgående excel-filen
workbook->Save(outputHiddenRowPivotTable);
Manipulera pivottabelldata med C++
Du kan också manipulera data från en befintlig pivottabell med Aspose.Cells för C++ API. I följande exempel kommer vi att ersätta texten “Apple” i cell “A2” med “Orange” och återspegla förändringen i pivottabellen. Följande är stegen för att manipulera pivottabelldata.
- Ladda först in exemplet på Excel-filen med klassen IWorkbook.
- Hämta kalkylbladet som innehåller pivottabellsdata med metoden IWorkbook->GetIWorksheets()->GetObjectByIndex (Aspose::Cells::Systems::Int32 index).
- Uppdatera pivottabellens data enligt dina krav.
- För att komma åt pivottabellen, använd metoden IWorksheet->GetIPivotTables()->GetObjectByIndex(Aspose::Cells::Systems::Int32 index).
- Uppdatera innehållet i pivottabellen och beräkna data med metoderna IPivotTable->RefreshData() respektive IPivotTable->CalculateData().
- Slutligen, spara Excel-filen med hjälp av IWorkbook->Spara (intrusiveptrAspose::Cells::Systems::String filnamn) metod.
Följande exempelkod visar hur du uppdaterar data i en pivottabell med C++.
// Källkatalogens sökväg.
StringPtr srcDir = new String("SourceDirectory\\");
// Utdatakatalogsökväg.
StringPtr outDir = new String("OutputDirectory\\");
// Sökvägen till indata excel-filen
StringPtr samplePivotTable = srcDir->StringAppend(new String("SamplePivotTable.xlsx"));
// Sökväg för utdata excel-filen
StringPtr outputManipulatePivotTable = outDir->StringAppend(new String("outputManipulatePivotTable.xlsx"));
// Ladda excel-exempelfilen
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook(samplePivotTable);
// Öppna det första arbetsbladet
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);
// Ändra värdet för cell A2 som finns i källdata för pivottabellen
intrusive_ptr<String> str = new String("Orange");
worksheet->GetICells()->GetObjectByIndex(new String("A2"))->PutValue(str);
// Öppna pivottabellen, uppdatera och beräkna den
intrusive_ptr<IPivotTable> pivotTable = worksheet->GetIPivotTables()->GetObjectByIndex(0);
pivotTable->RefreshData();
pivotTable->CalculateData();
// Spara den utgående excel-filen
workbook->Save(outputManipulatePivotTable);
Skaffa en gratis licens
För att prova API utan utvärderingsbegränsningar kan du begära en gratis tillfällig licens.
Slutsats
I den här artikeln har du lärt dig hur du arbetar med pivottabeller i Excel-filer med C++. Specifikt har du lärt dig hur du skapar en pivottabell och sorterar, döljer och uppdaterar data i en pivottabell med C++. Aspose.Cells för C++ är ett stort API som ger en massa ytterligare funktioner för att arbeta med Excel-filer. Du kan utforska API:et i detalj genom att besöka den officiella dokumentationen. Om du har några frågor är du välkommen att kontakta oss på vårt gratis supportforum.