Kontingenční tabulky uspořádají data tak, aby je reprezentovala smysluplným způsobem. Poskytují různé možnosti řazení a poskytují součty, průměry nebo jiné statistiky seskupováním dat dohromady. Je základním nástrojem pro analýzu dat a je základní součástí MS Excel. Můžete se ocitnout ve scénářích, kdy potřebujete vytvářet a manipulovat s kontingenčními tabulkami programově. Za tímto účelem vás tento článek naučí pracovat s kontingenčními tabulkami v souborech Excel pomocí C++.
- C++ API pro práci s kontingenčními tabulkami v souborech aplikace Excel
- Vytvořte kontingenční tabulku v souboru aplikace Excel pomocí C++
- Řazení kontingenční tabulky v souboru aplikace Excel pomocí C++
- Skrýt řádky v kontingenční tabulce pomocí C++
- Manipulujte s daty kontingenční tabulky pomocí C++
C++ API pro práci s kontingenčními tabulkami v souborech aplikace Excel
Aspose.Cells for C++ je nativní knihovna C++, která umožňuje vytvářet, číst a aktualizovat soubory aplikace Excel bez nutnosti instalace aplikace Microsoft Excel. Rozhraní API také podporuje práci s kontingenčními tabulkami v souborech aplikace Excel. Rozhraní API můžete nainstalovat buď prostřednictvím NuGet, nebo si jej stáhnout přímo ze sekce Downloads.
PM> Install-Package Aspose.Cells.Cpp
Vytvořte kontingenční tabulku v souboru aplikace Excel pomocí C++
V následujícím příkladu vytvoříme nový soubor Excel, vložíme do něj ukázková data a vytvoříme kontingenční tabulku. Soubor vygenerovaný v tomto příkladu bude použit jako zdrojový soubor pro další příklady. Následují kroky k vytvoření kontingenční tabulky v souboru aplikace Excel.
- Nejprve vytvořte instanci třídy IWorkbook, která bude reprezentovat nový soubor Excel.
- Otevřete list, kam chcete vložit kontingenční tabulku, pomocí metody IWorkbook->GetIWorksheets()->GetObjectByIndex (Aspose::Cells::Systems::Int32 index).
- Přidejte ukázková data pro kontingenční tabulku.
- Přidejte kontingenční tabulku pomocí IWorksheet->GetIPivotTables()->Add(intrusiveptrAspose::Cells::Systems::String sourceData, intrusiveptrAspose::Cells::Systems::String destCellName, intrusiveptrAspose::Cells::Systems::String název_tabulky).
- Pro přístup ke kontingenční tabulce použijte metodu IWorksheet->GetIPivotTables()->GetObjectByIndex(Aspose::Cells::Systems::Int32 index).
- Manipulujte s poli a nastavte styl kontingenční tabulky.
- Nakonec uložte soubor Excel pomocí IWorkbook->Save (intrusiveptrAspose::Cells::Systems::String fileName) metoda.
Následující ukázkový kód ukazuje, jak vytvořit kontingenční tabulku v souboru aplikace Excel pomocí C++.
// Cesta ke zdrojovému adresáři.
StringPtr srcDir = new String("SourceDirectory\\");
// Cesta výstupního adresáře.
StringPtr outDir = new String("OutputDirectory\\");
// Vytvořte instanci třídy IWorkbook
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook();
// Otevřete první pracovní list
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);
// Přidejte zdrojová data pro kontingenční tabulku
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);
// Přidat kontingenční tabulku
int idx = worksheet->GetIPivotTables()->Add(new String("A1:C4"), new String("E5"), new String("MyPivotTable"));
// Přístup k vytvořené kontingenční tabulce
intrusive_ptr<IPivotTable> pivotTable = worksheet->GetIPivotTables()->GetObjectByIndex(idx);
// Manipulujte s řádky, sloupci a datovými poli kontingenční tabulky
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());
// Nastavte styl kontingenční tabulky
pivotTable->SetPivotTableStyleType(PivotTableStyleType_PivotTableStyleMedium9);
// Uložte výstupní excelový soubor
workbook->Save(outDir->StringAppend(new String("outputCreatePivotTable.xlsx")));
Řazení kontingenční tabulky v souboru aplikace Excel pomocí C++
V následujícím příkladu seřadíme první sloupec kontingenční tabulky v sestupném pořadí. Následují kroky k řazení dat v kontingenční tabulce.
- Nejprve načtěte ukázkový soubor Excel pomocí třídy IWorkbook.
- Získejte list obsahující kontingenční tabulku pomocí metody IWorkbook->GetIWorksheets()->GetObjectByIndex (Aspose::Cells::Systems::Int32 index).
- Přístup ke kontingenční tabulce pomocí metody IWorksheet->GetIPivotTables()->GetObjectByIndex(Aspose::Cells::Systems::Int32 index).
- Získejte řádkové pole a seřaďte kontingenční tabulku pomocí metod IPivotField->SetAutoSort(bool value) a IPivotField->SetAscendSort(bool value).
- Obnovte obsah kontingenční tabulky a vypočítejte data pomocí metod IPivotTable->RefreshData() a IPivotTable->CalculateData().
- Nakonec uložte soubor Excel pomocí IWorkbook->Save (intrusiveptrAspose::Cells::Systems::String fileName) metoda.
Následující ukázkový kód ukazuje, jak seřadit kontingenční tabulku v souboru aplikace Excel pomocí C++.
// Cesta ke zdrojovému adresáři.
StringPtr srcDir = new String("SourceDirectory\\");
// Cesta výstupního adresáře.
StringPtr outDir = new String("OutputDirectory\\");
// Cesta ke vstupnímu excelovému souboru
StringPtr samplePivotTable = srcDir->StringAppend(new String("SamplePivotTable.xlsx"));
// Cesta k výstupnímu excelovému souboru
StringPtr outputSortedPivotTable = outDir->StringAppend(new String("outputSortedPivotTable.xlsx"));
// Načtěte ukázkový excelový soubor
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook(samplePivotTable);
// Otevřete první pracovní list
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);
// Vstupte do kontingenční tabulky
intrusive_ptr<IPivotTable> pivotTable = worksheet->GetIPivotTables()->GetObjectByIndex(0);
// Nastavte řazení kontingenční tabulky
pivotTable->AddFieldToArea(PivotFieldType_Row, 0);
intrusive_ptr<IPivotField> pivotField = pivotTable->GetIRowFields()->GetObjectByIndex(0);
pivotField->SetAutoSort(true);
pivotField->SetAscendSort(false);
// Obnovte a vypočítejte data v kontingenční tabulce.
pivotTable->RefreshData();
pivotTable->CalculateData();
// Uložte výstupní excelový soubor
workbook->Save(outputSortedPivotTable);
Skrýt řádky v kontingenční tabulce pomocí C++
Pomocí Aspose.Cells for C++ API můžete také skrýt řádky v kontingenční tabulce. V následujícím příkladu skryjeme řádek s označením řádku “Oranžová”. Následují kroky ke skrytí řádků v kontingenční tabulce.
- Nejprve načtěte ukázkový soubor Excel pomocí třídy IWorkbook.
- Získejte list obsahující kontingenční tabulku pomocí metody IWorkbook->GetIWorksheets()->GetObjectByIndex (Aspose::Cells::Systems::Int32 index).
- Přístup ke kontingenční tabulce pomocí metody IWorksheet->GetIPivotTables()->GetObjectByIndex(Aspose::Cells::Systems::Int32 index).
- Získejte rozsah dat těla kontingenční tabulky pomocí metody IPivotTable->GetIDataBodyRange().
- Procházejte řádky kontingenční tabulky a skryjte řádky splňující vaše kritéria.
- Obnovte obsah kontingenční tabulky a vypočítejte data pomocí metod IPivotTable->RefreshData() a IPivotTable->CalculateData().
- Nakonec uložte soubor Excel pomocí IWorkbook->Save (intrusiveptrAspose::Cells::Systems::String fileName) metoda.
Následující ukázkový kód ukazuje, jak skrýt řádky v kontingenční tabulce pomocí C++.
// Cesta ke zdrojovému adresáři.
StringPtr srcDir = new String("SourceDirectory\\");
// Cesta výstupního adresáře.
StringPtr outDir = new String("OutputDirectory\\");
// Cesta ke vstupnímu excelovému souboru
StringPtr samplePivotTable = srcDir->StringAppend(new String("SamplePivotTable.xlsx"));
// Cesta k výstupnímu excelovému souboru
StringPtr outputHiddenRowPivotTable = outDir->StringAppend(new String("outputHiddenRowPivotTable.xlsx"));
// Načtěte ukázkový excelový soubor
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook(samplePivotTable);
// Otevřete první pracovní list
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);
// Vstupte do kontingenční tabulky
intrusive_ptr<IPivotTable> pivotTable = worksheet->GetIPivotTables()->GetObjectByIndex(0);
// Získejte rozsah těla otočného stolu
intrusive_ptr<ICellArea> dataBodyRange = pivotTable->GetIDataBodyRange();
// Počáteční řádek kontingenční tabulky
int currentRow = 5;
// Kontingenční řádek kontingenční tabulky
int rowsUsed = dataBodyRange->GetendRow();
// Iterujte řádky, porovnejte hodnotu buňky a skryjte řádky.
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);
}
}
// Obnovte a vypočítejte data v kontingenční tabulce.
pivotTable->RefreshData();
pivotTable->CalculateData();
// Uložte výstupní excelový soubor
workbook->Save(outputHiddenRowPivotTable);
Manipulujte s daty kontingenční tabulky pomocí C++
Můžete také manipulovat s daty existující kontingenční tabulky pomocí Aspose.Cells for C++ API. V následujícím příkladu nahradíme text „Apple“ v buňce „A2“ textem „Orange“ a zohledníme změnu v kontingenční tabulce. Následují kroky pro manipulaci s daty kontingenční tabulky.
- Nejprve načtěte ukázkový soubor Excel pomocí třídy IWorkbook.
- Načtěte list obsahující data kontingenční tabulky pomocí metody IWorkbook->GetIWorksheets()->GetObjectByIndex (Aspose::Cells::Systems::Int32 index).
- Aktualizujte data kontingenční tabulky podle vašich požadavků.
- Pro přístup ke kontingenční tabulce použijte metodu IWorksheet->GetIPivotTables()->GetObjectByIndex(Aspose::Cells::Systems::Int32 index).
- Obnovte obsah kontingenční tabulky a vypočítejte data pomocí metod IPivotTable->RefreshData() a IPivotTable->CalculateData().
- Nakonec uložte soubor Excel pomocí IWorkbook->Save (intrusiveptrAspose::Cells::Systems::String fileName) metoda.
Následující ukázkový kód ukazuje, jak aktualizovat data kontingenční tabulky pomocí C++.
// Cesta ke zdrojovému adresáři.
StringPtr srcDir = new String("SourceDirectory\\");
// Cesta výstupního adresáře.
StringPtr outDir = new String("OutputDirectory\\");
// Cesta ke vstupnímu excelovému souboru
StringPtr samplePivotTable = srcDir->StringAppend(new String("SamplePivotTable.xlsx"));
// Cesta k výstupnímu excelovému souboru
StringPtr outputManipulatePivotTable = outDir->StringAppend(new String("outputManipulatePivotTable.xlsx"));
// Načtěte ukázkový excelový soubor
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook(samplePivotTable);
// Otevřete první pracovní list
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);
// Změňte hodnotu buňky A2, která je uvnitř zdrojových dat kontingenční tabulky
intrusive_ptr<String> str = new String("Orange");
worksheet->GetICells()->GetObjectByIndex(new String("A2"))->PutValue(str);
// Otevřete kontingenční tabulku, obnovte ji a vypočítejte ji
intrusive_ptr<IPivotTable> pivotTable = worksheet->GetIPivotTables()->GetObjectByIndex(0);
pivotTable->RefreshData();
pivotTable->CalculateData();
// Uložte výstupní excelový soubor
workbook->Save(outputManipulatePivotTable);
Získejte bezplatnou licenci
Abyste mohli API vyzkoušet bez omezení hodnocení, můžete požádat o bezplatnou dočasnou licenci.
Závěr
V tomto článku jste se naučili pracovat s kontingenčními tabulkami v souborech Excel pomocí C++. Konkrétně jste se naučili, jak vytvořit kontingenční tabulku a třídit, skrývat a aktualizovat data v kontingenční tabulce pomocí C++. Aspose.Cells for C++ je rozsáhlé API, které poskytuje spoustu dalších funkcí pro práci se soubory aplikace Excel. Rozhraní API můžete podrobně prozkoumat na oficiální dokumentaci. V případě jakýchkoli dotazů nás neváhejte kontaktovat na našem bezplatném fóru podpory.