Tri des données avec C++
Triage des données dans Microsoft Excel
Pour trier les données dans Microsoft Excel :
- Sélectionnez Données dans le menu Trier. La boîte de dialogue Trier s’affiche.
- Sélectionnez une option de tri.
En général, le tri est effectué sur une liste - définie comme un groupe de données contiguës où les données sont affichées dans des colonnes.
Trier les données avec Aspose.Cells
Aspose.Cells fournit la classe DataSorter utilisée pour trier les données par ordre croissant ou décroissant. La classe a des membres importants, par exemple, des propriétés comme Key1 … Key3 et Order1 … Order3. Ces membres sont utilisés pour définir les clés triées et spécifier l’ordre de tri des clés.
Vous devez définir les clés et définir l’ordre de tri avant de mettre en œuvre le tri des données. La classe fournit la méthode Sort utilisée pour effectuer le tri des données en fonction des données de cellule dans une feuille de calcul.
La méthode Sort accepte les paramètres suivants :
- Cells, les cellules de la feuille de calcul sous-jacente.
- CellArea, la plage de cellules. Définissez la zone de cellules avant d’appliquer le tri des données.
Cet exemple utilise le fichier modèle “Book1.xls” créé dans Microsoft Excel. Après l’exécution du code ci-dessous, les données sont triées correctement.
#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"book1.xls";
// Path of output excel file
U16String outputFilePath = outDir + u"output.out.xls";
// Create workbook
Workbook workbook(inputFilePath);
// Get the workbook datasorter object
DataSorter sorter = workbook.GetDataSorter();
// Set the first order for datasorter object
sorter.SetOrder1(SortOrder::Descending);
// Define the first key
sorter.SetKey1(0);
// Set the second order for datasorter object
sorter.SetOrder2(SortOrder::Ascending);
// Define the second key
sorter.SetKey2(1);
// Create a cells area (range)
CellArea ca = CellArea::CreateCellArea(0, 0, 13, 1);
// Sort data in the specified data range (A1:B14)
sorter.Sort(workbook.GetWorksheets().Get(0).GetCells(), ca);
// Save the excel file
workbook.Save(outputFilePath);
std::cout << "Data sorted successfully!" << std::endl;
Aspose::Cells::Cleanup();
}
Tri des données avec couleur de fond
Excel propose des fonctionnalités pour trier les données en fonction de la couleur de fond. La même fonctionnalité est fournie en utilisant Aspose.Cells en utilisant DataSorter où SortOnType.CellColor peut être utilisé dans AddKey() pour trier les données en fonction de la couleur de fond. Toutes les cellules qui contiennent la couleur spécifiée dans le AddKey(), la fonction sont placées en haut ou en bas en fonction du paramètre SortOrder et l’ordre des autres cellules n’est pas du tout modifié.
Voici les fichiers d’exemple qui peuvent être téléchargés pour tester cette fonctionnalité :
outputsampleBackGroundFile.xlsx
#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"CellsNet46500.xlsx";
// Path of output excel file
U16String outputFilePath = outDir + u"outputSortData_CustomSortList.xlsx";
// Create a workbook object and load template file
Workbook workbook(inputFilePath);
// Instantiate data sorter object
DataSorter sorter = workbook.GetDataSorter();
// Add key for second column for red color
sorter.AddColorKey(1, SortOnType::CellColor, SortOrder::Descending, Color::Red());
// Sort the data based on the key
sorter.Sort(workbook.GetWorksheets().Get(0).GetCells(), CellArea::CreateCellArea(u"A2", u"C6"));
// Save the output file
workbook.Save(outputFilePath);
std::cout << "Data sorted successfully!" << std::endl;
Aspose::Cells::Cleanup();
}