Сортировка данных в столбце с пользовательским списком сортировки с помощью C++
Возможные сценарии использования
Вы можете отсортировать данные в столбце, используя пользовательский список. Это можно сделать с помощью метода DataSorter::AddKey(int key, SortOrder order, String customList). Однако этот метод работает только в случае, если элементы в пользовательском списке не содержат запятых. Если там есть запятые, как в “USA,US”, “China,CN” и т.д., тогда необходимо использовать метод **DataSorter::AddKey Method (Int32, SortOrder, String[])**. Здесь последний параметр — не строка, а массив строк.
Сортировка данных в столбце с пользовательским списком
Следующий пример кода показывает, как использовать метод **DataSorter::AddKey Method (Int32, SortOrder, String[])** для сортировки данных с помощью пользовательского списка сортировки. Пожалуйста, посмотрите на пример файла Excel, используемый в этом коде, и сгенерированный выходной файл Excel. Следующий скриншот показывает эффект работы кода на примере файла Excel при выполнении.
Образец кода
#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\\");
// Load the source Excel file
Workbook wb(srcDir + u"sampleSortData_CustomSortList.xlsx");
// Access first worksheet
Worksheet ws = wb.GetWorksheets().Get(0);
// Specify cell area - sort from A1 to A40
CellArea ca = CellArea::CreateCellArea(u"A1", u"A40");
// Create Custom Sort list
Vector<U16String> customSortList = { u"USA,US", u"Brazil,BR", u"China,CN", u"Russia,RU", u"Canada,CA" };
// Add Key for Column A, Sort it in Ascending Order with Custom Sort List
wb.GetDataSorter().AddKey(0, SortOrder::Ascending, customSortList);
wb.GetDataSorter().Sort(ws.GetCells(), ca);
// Save the output Excel file
wb.Save(outDir + u"outputSortData_CustomSortList.xlsx");
std::cout << "Data sorted successfully with custom sort list!" << std::endl;
Aspose::Cells::Cleanup();
}