Указание предупреждения сортировки при сортировке данных с помощью C++
Возможные сценарии использования
Пожалуйста, учтите этот текстовый набор, т.е. {11, 111, 22}. Этот текстовый набор сортируется, потому что в терминах текста 111 идет перед 22. Но, если вы хотите отсортировать этот набор не как текст, а как числа, то он станет {11, 22, 111}, потому что по числовому значению 111 идет после 22. Aspose.Cells предоставляет свойство {0} для решения этой проблемы. Пожалуйста, установите это свойство в true, и ваш текстовый набор будет сортироваться как числовые данные. Ниже показано предупреждение о сортировке, отображаемое Microsoft Excel, когда текстовые данные, похожие на числовые, сортируются.
Образец кода
В следующем образце кода показано использование свойства DataSorter.GetSortAsNumber(), как объяснено ранее. Пожалуйста, проверьте его образцовый файл 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\\");
// Create workbook
Workbook workbook(srcDir + u"sampleSortAsNumber.xlsx");
// Access first worksheet
Worksheet worksheet = workbook.GetWorksheets().Get(0);
// Create cell area
CellArea ca = CellArea::CreateCellArea(u"A1", u"A20");
// Create data sorter
DataSorter sorter = workbook.GetDataSorter();
// Find the index of column A
int idx = CellsHelper::ColumnNameToIndex(u"A");
// Add key in sorter for sorting in ascending order
sorter.AddKey(idx, SortOrder::Ascending);
sorter.SetSortAsNumber(true);
// Perform sort
sorter.Sort(worksheet.GetCells(), ca);
// Save the output workbook
workbook.Save(outDir + u"outputSortAsNumber.xlsx");
std::cout << "Sorting completed successfully!" << std::endl;
Aspose::Cells::Cleanup();
}