Почему подразделу моего диапазона не удается добавить границы (Aspose Cells)?

Основываясь на коде отсюда, я добавил следующее:

string bottomRightRange = string.Format("F{0}", rowsUsed);
var range = locationWorksheet.Cells.CreateRange("A8", bottomRightRange);

//Setting border for each cell in the range
var style = workBook.CreateStyle();
style.SetBorder(BorderType.BottomBorder, CellBorderType.Thin, Color.Black);
style.SetBorder(BorderType.LeftBorder, CellBorderType.Thin, Color.Black);
style.SetBorder(BorderType.RightBorder, CellBorderType.Thin, Color.Black);
style.SetBorder(BorderType.TopBorder, CellBorderType.Thin, Color.Black);

for (int r = range.FirstRow; r < range.RowCount; r++)
{
    for (int c = range.FirstColumn; c < range.ColumnCount; c++)
    {
        Cell cell = locationWorksheet.Cells[r, c];
        cell.SetStyle(style, new StyleFlag()
        {
            TopBorder = true,
            BottomBorder = true,
            LeftBorder = true,
            RightBorder = true

        });
    }
}

//Setting outline border to range
range.SetOutlineBorder(BorderType.TopBorder, CellBorderType.Thin, Color.Black);
range.SetOutlineBorder(BorderType.BottomBorder, CellBorderType.Thin, Color.Black);
range.SetOutlineBorder(BorderType.LeftBorder, CellBorderType.Thin, Color.Black);
range.SetOutlineBorder(BorderType.RightBorder, CellBorderType.Thin, Color.Black);

Это сработало хорошо-по большей части — но обратите внимание на это:

Введите описание изображения здесь

Последние семь строк в конце (за исключением нижней границы последней строки и правой границы для всех из них) не граничат. Почему бы и нет?

Примечание: bottomRightRange приравнивается к «F94» в этом случае.

Почему большой кусок работает правильно, а небольшая часть в конце не работает как следует?

1 ответ

  1. Проблема была (не очевидно из кода выше), что лист имеет несколько предварительных строк, используемых в качестве информации заголовка. Они должны быть приняты во внимание при циклировании. Так это:

    for (int r = range.FirstRow; r < range.RowCount; r++)
    

    …нужно стать этим:

    for (int r = range.FirstRow; r < range.RowCount + FUDGE_FACTOR; r++`)
    

    FUDGE_FACTOR-количество строк, используемых до начала «реальных» данных.