Получить максимальный индекс столбца в строке и максимальный индекс строки в столбце с помощью C++

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

Когда вам нужно манипулировать только некоторыми данными в строках или столбцах, важно знать диапазон данных этих строк и столбцов. Aspose.Cells предоставляет эту функцию. Чтобы получить максимальный индекс столбца в строке, можно использовать свойства Row.GetLastCell() и Row.GetLastDataCell(), а затем — свойство Cell.GetColumn(), чтобы получить максимальный индекс столбца и максимальный индекс столбца с данными. Для получения максимального индекса строки и индекса строки с данными в столбце вам нужно создать диапазон по столбцу, пройтись по диапазону, чтобы найти последнюю ячейку, и, наконец, получить атрибут Cell.GetRow() этой ячейки.

Aspose.Cells предоставляет следующие свойства и методы, чтобы помочь вам достичь своих целей.

Получите максимальный индекс столбца в строке и максимальный индекс строки в столбце, используя Aspose.Cells

Этот пример показывает, как:

  1. Загрузите образец файла.
  2. Получите строку, которая нуждается в получении максимального индекса столбца и максимального индекса данных столбца.
  3. Получите атрибут Cell.GetColumn() на ячейке.
  4. Создайте диапазон на основе столбца.
  5. Получите итератор и пройдите по диапазону.
  6. Получите атрибут Cell.GetRow() на ячейке.
#include <iostream>
#include <memory>
#include "Aspose.Cells.h"

using namespace Aspose::Cells;

int main()
{
    Aspose::Cells::Startup();

    U16String srcDir(u"..\\Data\\01_SourceDirectory\\");
    U16String filePath = srcDir + u"sample.xlsx";

    Workbook workbook(filePath);
    Worksheet sheet = workbook.GetWorksheets().Get(0);
    Cells cells = sheet.GetCells();

    Row row = cells.CheckRow(1);
    if (row)
    {
        std::cout << "Max column index in row: " << row.GetLastCell().GetColumn() << std::endl;
        std::cout << "Max data column index in row: " << row.GetLastDataCell().GetColumn() << std::endl;
    }

    Range columnRange = cells.CreateRange(1, 1, true);
    auto colIter = columnRange.GetEnumerator();

    int maxRow = 0;
    int maxDataRow = 0;

    while (colIter.MoveNext())
    {
        Cell currCell = colIter.GetCurrent();
        if (!currCell.GetStringValue().IsEmpty())
        {
            maxDataRow = currCell.GetRow();
        }
        if (!currCell.GetStringValue().IsEmpty() || currCell.GetHasCustomStyle())
        {
            maxRow = currCell.GetRow();
        }
    }

    std::cout << "Max row index in Column: " << maxRow << std::endl;
    std::cout << "Max data row index in Column: " << maxDataRow << std::endl;

    Aspose::Cells::Cleanup();
    return 0;
}