Указание предупреждения сортировки при сортировке данных с помощью C++

Возможные сценарии использования

Пожалуйста, учтите этот текстовый набор, т.е. {11, 111, 22}. Этот текстовый набор сортируется, потому что в терминах текста 111 идет перед 22. Но, если вы хотите отсортировать этот набор не как текст, а как числа, то он станет {11, 22, 111}, потому что по числовому значению 111 идет после 22. Aspose.Cells предоставляет свойство {0} для решения этой проблемы. Пожалуйста, установите это свойство в true, и ваш текстовый набор будет сортироваться как числовые данные. Ниже показано предупреждение о сортировке, отображаемое Microsoft Excel, когда текстовые данные, похожие на числовые, сортируются.

todo:image_alt_text

Образец кода

В следующем образце кода показано использование свойства 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();
}