Créer des tableaux croisés dynamiques et des graphiques croisés dynamiques avec C++
Un tableau croisé dynamique est un résumé interactif des enregistrements. Par exemple, vous pouvez avoir des centaines d’entrées de factures dans une liste dans une feuille de calcul. Un tableau croisé dynamique peut totaliser les factures par client, produit ou date. Avec Microsoft Excel, il est possible de réorganiser rapidement les informations dans le tableau croisé dynamique en faisant glisser des boutons vers une nouvelle position.
Un graphique croisé dynamique est une représentation graphique interactive des données dans un tableau croisé dynamique. Les graphiques croisés dynamiques ont été introduits dans Excel 2000. L’utilisation d’un graphique croisé dynamique rend encore plus facile la compréhension des données puisque le tableau croisé dynamique crée automatiquement des sous-totaux et des totaux.
Aspose.Cells prend en charge les tableaux croisés dynamiques et les graphiques croisés dynamiques.
Ajout de tables pivot et de graphiques
Aspose.Cells fournit un ensemble spécial de classes utilisées pour créer des tables pivot. Ces classes sont utilisées pour créer et définir les objets PivotTable, qui agissent comme des blocs de construction de base d’un objet PivotTable :
- ChampDePivot, un champ dans un rapport de tableau croisé dynamique.
- ChampsDePivot, une collection de tous les objets ChampDePivot dans un tableau croisé dynamique.
- TableauCroiseDynamique, un rapport de tableau croisé dynamique sur une feuille de calcul.
- TableauxCroisesDynamiques, une collection de tous les objets TableauCroiseDynamique sur la feuille de calcul.
Préparation à l’utilisation d’Aspose.Cells
- Téléchargez et installez Aspose.Cells :
- Télécharger Aspose.Cells.
- Installez-le sur votre ordinateur de développement. Tous les composants Aspose, une fois installés, fonctionnent en mode d’évaluation. Le mode d’évaluation n’a pas de limite de temps et ne fait que injecter des filigranes dans les documents produits. Pour utiliser pleinement le composant, vous devez disposer d’une licence valide.
- Créer un projet :
- Démarrez votre environnement de développement C++ (par exemple, Visual Studio).
- Créez une nouvelle application console.
- Ajouter des références:
Ajoutez une référence au composant Aspose.Cells dans votre projet, par exemple,
...\Program Files\Aspose\Aspose.Cells\Bin\Net1.0\Aspose.Cells.dll
.
Ajouter un tableau croisé dynamique
Pour créer un tableau croisé dynamique en utilisant Aspose.Cells:
- Ajoutez des données dans les cellules d’une feuille de calcul en utilisant la méthode
PutValue
de l’objetCell
. Vous pouvez également utiliser un fichier modèle déjà rempli de données. Les données seront utilisées comme source des données pour le tableau croisé dynamique. - Ajoutez un tableau croisé dynamique à la feuille en appelant la méthode
Add
de la collectionPivotTables
(encapsulée dans l’objetWorksheet
). - Accédez au nouvel objet
PivotTable
dans la collectionPivotTables
en passant son index. Utilisez l’un des objets de tableau croisé dynamique encapsulés dans l’objetPivotTable
pour gérer le tableau.
Des exemples de code sont donnés ci-dessous.
#include <iostream>
#include "Aspose.Cells.h"
using namespace Aspose::Cells;
int main()
{
Aspose::Cells::Startup();
// Source directory path
U16String srcDir(u"..\\Data\\01_SourceDirectory\\");
// Output directory path
U16String outDir(u"..\\Data\\02_OutputDirectory\\");
// Create a new workbook
Workbook workbook;
// Get the first worksheet
Worksheet sheet = workbook.GetWorksheets().Get(0);
// Name the sheet
sheet.SetName(u"Data");
// Get the cells collection
Cells cells = sheet.GetCells();
// Set values to the cells
Cell cell = cells.Get(u"A1");
cell.PutValue(u"Employee");
cell = cells.Get(u"B1");
cell.PutValue(u"Quarter");
cell = cells.Get(u"C1");
cell.PutValue(u"Product");
cell = cells.Get(u"D1");
cell.PutValue(u"Continent");
cell = cells.Get(u"E1");
cell.PutValue(u"Country");
cell = cells.Get(u"F1");
cell.PutValue(u"Sale");
// Fill employee names
cell = cells.Get(u"A2");
cell.PutValue(u"David");
cell = cells.Get(u"A3");
cell.PutValue(u"David");
cell = cells.Get(u"A4");
cell.PutValue(u"David");
cell = cells.Get(u"A5");
cell.PutValue(u"David");
cell = cells.Get(u"A6");
cell.PutValue(u"James");
cell = cells.Get(u"A7");
cell.PutValue(u"James");
cell = cells.Get(u"A8");
cell.PutValue(u"James");
cell = cells.Get(u"A9");
cell.PutValue(u"James");
cell = cells.Get(u"A10");
cell.PutValue(u"James");
cell = cells.Get(u"A11");
cell.PutValue(u"Miya");
cell = cells.Get(u"A12");
cell.PutValue(u"Miya");
cell = cells.Get(u"A13");
cell.PutValue(u"Miya");
cell = cells.Get(u"A14");
cell.PutValue(u"Miya");
cell = cells.Get(u"A15");
cell.PutValue(u"Miya");
cell = cells.Get(u"A16");
cell.PutValue(u"Miya");
cell = cells.Get(u"A17");
cell.PutValue(u"Miya");
cell = cells.Get(u"A18");
cell.PutValue(u"Elvis");
cell = cells.Get(u"A19");
cell.PutValue(u"Elvis");
cell = cells.Get(u"A20");
cell.PutValue(u"Elvis");
cell = cells.Get(u"A21");
cell.PutValue(u"Elvis");
cell = cells.Get(u"A22");
cell.PutValue(u"Elvis");
cell = cells.Get(u"A23");
cell.PutValue(u"Elvis");
cell = cells.Get(u"A24");
cell.PutValue(u"Elvis");
cell = cells.Get(u"A25");
cell.PutValue(u"Jean");
cell = cells.Get(u"A26");
cell.PutValue(u"Jean");
cell = cells.Get(u"A27");
cell.PutValue(u"Jean");
cell = cells.Get(u"A28");
cell.PutValue(u"Ada");
cell = cells.Get(u"A29");
cell.PutValue(u"Ada");
cell = cells.Get(u"A30");
cell.PutValue(u"Ada");
// Fill quarters
cell = cells.Get(u"B2");
cell.PutValue(1);
cell = cells.Get(u"B3");
cell.PutValue(2);
cell = cells.Get(u"B4");
cell.PutValue(3);
cell = cells.Get(u"B5");
cell.PutValue(4);
cell = cells.Get(u"B6");
cell.PutValue(1);
cell = cells.Get(u"B7");
cell.PutValue(2);
cell = cells.Get(u"B8");
cell.PutValue(3);
cell = cells.Get(u"B9");
cell.PutValue(4);
cell = cells.Get(u"B10");
cell.PutValue(4);
cell = cells.Get(u"B11");
cell.PutValue(1);
cell = cells.Get(u"B12");
cell.PutValue(1);
cell = cells.Get(u"B13");
cell.PutValue(2);
cell = cells.Get(u"B14");
cell.PutValue(2);
cell = cells.Get(u"B15");
cell.PutValue(3);
cell = cells.Get(u"B16");
cell.PutValue(4);
cell = cells.Get(u"B17");
cell.PutValue(4);
cell = cells.Get(u"B18");
cell.PutValue(1);
cell = cells.Get(u"B19");
cell.PutValue(1);
cell = cells.Get(u"B20");
cell.PutValue(2);
cell = cells.Get(u"B21");
cell.PutValue(3);
cell = cells.Get(u"B22");
cell.PutValue(3);
cell = cells.Get(u"B23");
cell.PutValue(4);
cell = cells.Get(u"B24");
cell.PutValue(4);
cell = cells.Get(u"B25");
cell.PutValue(1);
cell = cells.Get(u"B26");
cell.PutValue(2);
cell = cells.Get(u"B27");
cell.PutValue(3);
cell = cells.Get(u"B28");
cell.PutValue(1);
cell = cells.Get(u"B29");
cell.PutValue(2);
cell = cells.Get(u"B30");
cell.PutValue(3);
// Fill products
cell = cells.Get(u"C2");
cell.PutValue(u"Maxilaku");
cell = cells.Get(u"C3");
cell.PutValue(u"Maxilaku");
cell = cells.Get(u"C4");
cell.PutValue(u"Chai");
cell = cells.Get(u"C5");
cell.PutValue(u"Maxilaku");
cell = cells.Get(u"C6");
cell.PutValue(u"Chang");
cell = cells.Get(u"C7");
cell.PutValue(u"Chang");
cell = cells.Get(u"C8");
cell.PutValue(u"Chang");
cell = cells.Get(u"C9");
cell.PutValue(u"Chang");
cell = cells.Get(u"C10");
cell.PutValue(u"Chang");
cell = cells.Get(u"C11");
cell.PutValue(u"Geitost");
cell = cells.Get(u"C12");
cell.PutValue(u"Chai");
cell = cells.Get(u"C13");
cell.PutValue(u"Geitost");
cell = cells.Get(u"C14");
cell.PutValue(u"Geitost");
cell = cells.Get(u"C15");
cell.PutValue(u"Maxilaku");
cell = cells.Get(u"C16");
cell.PutValue(u"Geitost");
cell = cells.Get(u"C17");
cell.PutValue(u"Geitost");
cell = cells.Get(u"C18");
cell.PutValue(u"Ikuru");
cell = cells.Get(u"C19");
cell.PutValue(u"Ikuru");
cell = cells.Get(u"C20");
cell.PutValue(u"Ikuru");
cell = cells.Get(u"C21");
cell.PutValue(u"Ikuru");
cell = cells.Get(u"C22");
cell.PutValue(u"Ipoh Coffee");
cell = cells.Get(u"C23");
cell.PutValue(u"Ipoh Coffee");
cell = cells.Get(u"C24");
cell.PutValue(u"Ipoh Coffee");
cell = cells.Get(u"C25");
cell.PutValue(u"Chocolade");
cell = cells.Get(u"C26");
cell.PutValue(u"Chocolade");
cell = cells.Get(u"C27");
cell.PutValue(u"Chocolade");
cell = cells.Get(u"C28");
cell.PutValue(u"Chocolade");
cell = cells.Get(u"C29");
cell.PutValue(u"Chocolade");
cell = cells.Get(u"C30");
cell.PutValue(u"Chocolade");
// Fill continents
cell = cells.Get(u"D2");
cell.PutValue(u"Asia");
cell = cells.Get(u"D3");
cell.PutValue(u"Asia");
cell = cells.Get(u"D4");
cell.PutValue(u"Asia");
cell = cells.Get(u"D5");
cell.PutValue(u"Asia");
cell = cells.Get(u"D6");
cell.PutValue(u"Europe");
cell = cells.Get(u"D7");
cell.PutValue(u"Europe");
cell = cells.Get(u"D8");
cell.PutValue(u"Europe");
cell = cells.Get(u"D9");
cell.PutValue(u"Europe");
cell = cells.Get(u"D10");
cell.PutValue(u"Europe");
cell = cells.Get(u"D11");
cell.PutValue(u"America");
cell = cells.Get(u"D12");
cell.PutValue(u"America");
cell = cells.Get(u"D13");
cell.PutValue(u"America");
cell = cells.Get(u"D14");
cell.PutValue(u"America");
cell = cells.Get(u"D15");
cell.PutValue(u"America");
cell = cells.Get(u"D16");
cell.PutValue(u"America");
cell = cells.Get(u"D17");
cell.PutValue(u"America");
cell = cells.Get(u"D18");
cell.PutValue(u"Europe");
cell = cells.Get(u"D19");
cell.PutValue(u"Europe");
cell = cells.Get(u"D20");
cell.PutValue(u"Europe");
cell = cells.Get(u"D21");
cell.PutValue(u"Oceania");
cell = cells.Get(u"D22");
cell.PutValue(u"Oceania");
cell = cells.Get(u"D23");
cell.PutValue(u"Oceania");
cell = cells.Get(u"D24");
cell.PutValue(u"Oceania");
cell = cells.Get(u"D25");
cell.PutValue(u"Africa");
cell = cells.Get(u"D26");
cell.PutValue(u"Africa");
cell = cells.Get(u"D27");
cell.PutValue(u"Africa");
cell = cells.Get(u"D28");
cell.PutValue(u"Africa");
cell = cells.Get(u"D29");
cell.PutValue(u"Africa");
cell = cells.Get(u"D30");
cell.PutValue(u"Africa");
// Fill countries
cell = cells.Get(u"E2");
cell.PutValue(u"China");
cell = cells.Get(u"E3");
cell.PutValue(u"India");
cell = cells.Get(u"E4");
cell.PutValue(u"Korea");
cell = cells.Get(u"E5");
cell.PutValue(u"India");
cell = cells.Get(u"E6");
cell.PutValue(u"France");
cell = cells.Get(u"E7");
cell.PutValue(u"France");
cell = cells.Get(u"E8");
cell.PutValue(u"Germany");
cell = cells.Get(u"E9");
cell.PutValue(u"Italy");
cell = cells.Get(u"E10");
cell.PutValue(u"France");
cell = cells.Get(u"E11");
cell.PutValue(u"U.S.");
cell = cells.Get(u"E12");
cell.PutValue(u"U.S.");
cell = cells.Get(u"E13");
cell.PutValue(u"Brazil");
cell = cells.Get(u"E14");
cell.PutValue(u"U.S.");
cell = cells.Get(u"E15");
cell.PutValue(u"U.S.");
cell = cells.Get(u"E16");
cell.PutValue(u"Canada");
cell = cells.Get(u"E17");
cell.PutValue(u"U.S.");
cell = cells.Get(u"E18");
cell.PutValue(u"Italy");
cell = cells.Get(u"E19");
cell.PutValue(u"France");
cell = cells.Get(u"E20");
cell.PutValue(u"Italy");
cell = cells.Get(u"E21");
cell.PutValue(u"New Zealand");
cell = cells.Get(u"E22");
cell.PutValue(u"Australia");
cell = cells.Get(u"E23");
cell.PutValue(u"Australia");
cell = cells.Get(u"E24");
cell.PutValue(u"New Zealand");
cell = cells.Get(u"E25");
cell.PutValue(u"S.Africa");
cell = cells.Get(u"E26");
cell.PutValue(u"S.Africa");
cell = cells.Get(u"E27");
cell.PutValue(u"S.Africa");
cell = cells.Get(u"E28");
cell.PutValue(u"Egypt");
cell = cells.Get(u"E29");
cell.PutValue(u"Egypt");
cell = cells.Get(u"E30");
cell.PutValue(u"Egypt");
// Fill sales
cell = cells.Get(u"F2");
cell.PutValue(2000);
cell = cells.Get(u"F3");
cell.PutValue(500);
cell = cells.Get(u"F4");
cell.PutValue(1200);
cell = cells.Get(u"F5");
cell.PutValue(1500);
cell = cells.Get(u"F6");
cell.PutValue(500);
cell = cells.Get(u"F7");
cell.PutValue(1500);
cell = cells.Get(u"F8");
cell.PutValue(800);
cell = cells.Get(u"F9");
cell.PutValue(900);
cell = cells.Get(u"F10");
cell.PutValue(500);
cell = cells.Get(u"F11");
cell.PutValue(1600);
cell = cells.Get(u"F12");
cell.PutValue(600);
cell = cells.Get(u"F13");
cell.PutValue(2000);
cell = cells.Get(u"F14");
cell.PutValue(500);
cell = cells.Get(u"F15");
cell.PutValue(900);
cell = cells.Get(u"F16");
cell.PutValue(700);
cell = cells.Get(u"F17");
cell.PutValue(1400);
cell = cells.Get(u"F18");
cell.PutValue(1350);
cell = cells.Get(u"F19");
cell.PutValue(300);
cell = cells.Get(u"F20");
cell.PutValue(500);
cell = cells.Get(u"F21");
cell.PutValue(1000);
cell = cells.Get(u"F22");
cell.PutValue(1500);
cell = cells.Get(u"F23");
cell.PutValue(1500);
cell = cells.Get(u"F24");
cell.PutValue(1600);
cell = cells.Get(u"F25");
cell.PutValue(1000);
cell = cells.Get(u"F26");
cell.PutValue(1200);
cell = cells.Get(u"F27");
cell.PutValue(1300);
cell = cells.Get(u"F28");
cell.PutValue(1500);
cell = cells.Get(u"F29");
cell.PutValue(1400);
cell = cells.Get(u"F30");
cell.PutValue(1000);
// Add a new sheet
Worksheet sheet2 = workbook.GetWorksheets().Get(workbook.GetWorksheets().Add());
sheet2.SetName(u"PivotTable");
// Get the pivot tables collection
PivotTableCollection pivotTables = sheet2.GetPivotTables();
// Add a pivot table
int index = pivotTables.Add(u"=Data!A1:F30", u"B3", u"PivotTable1");
PivotTable pivotTable = pivotTables.Get(index);
// Show grand totals
pivotTable.SetShowRowGrandTotals(true);
pivotTable.SetShowColumnGrandTotals(true);
// Set auto format
pivotTable.SetIsAutoFormat(true);
pivotTable.SetAutoFormatType(PivotTableAutoFormatType::Report6);
// Add fields to row area
pivotTable.AddFieldToArea(PivotFieldType::Row, 0);
pivotTable.AddFieldToArea(PivotFieldType::Row, 2);
pivotTable.AddFieldToArea(PivotFieldType::Row, 1);
// Add fields to column area
pivotTable.AddFieldToArea(PivotFieldType::Column, 3);
// Add fields to data area
pivotTable.AddFieldToArea(PivotFieldType::Data, 5);
// Set number format for the first data field
pivotTable.GetDataFields().Get(0).SetNumberFormat(u"$#,##0.00");
// Save the workbook
workbook.Save(outDir + u"pivotTable_test.out.xlsx");
Aspose::Cells::Cleanup();
return 0;
}
Ajout d’un graphique croisé dynamique
Pour créer un graphique croisé dynamique en utilisant Aspose.Cells :
- Ajoutez un graphique.
- Définissez le
PivotSource
du graphique pour référencer un tableau croisé dynamique existant dans la feuille de calcul. - Définissez d’autres attributs.
#include <iostream>
#include "Aspose.Cells.h"
using namespace Aspose::Cells;
int main()
{
Aspose::Cells::Startup();
// Source directory path
U16String srcDir(u"..\\Data\\01_SourceDirectory\\");
// Output directory path
U16String outDir(u"..\\Data\\02_OutputDirectory\\");
// Path of input excel file
U16String inputFilePath = srcDir + u"pivotTable_test.xlsx";
// Path of output excel file
U16String outputFilePath = outDir + u"pivotChart_test_out.xlsx";
// Create workbook
Workbook workbook(inputFilePath);
// Adding a new sheet
Worksheet sheet3 = workbook.GetWorksheets().Get(workbook.GetWorksheets().Add(SheetType::Chart));
// Naming the sheet
sheet3.SetName(u"PivotChart");
// Adding a column chart
int index = sheet3.GetCharts().Add(ChartType::Column, 0, 5, 28, 16);
// Setting the pivot chart data source
sheet3.GetCharts().Get(index).SetPivotSource(u"PivotTable!PivotTable1");
sheet3.GetCharts().Get(index).SetHidePivotFieldButtons(false);
// Saving the Excel file
workbook.Save(outputFilePath);
std::cout << "Pivot chart created successfully!" << std::endl;
Aspose::Cells::Cleanup();
}