Почему границы не применяются к моему верхнему ряду (ячейкам Aspose)?

У меня есть следующий код для добавления границ в строку:

Range _range;
_range = customerWorksheet.Cells.CreateRange("A1", "P1");
_range.SetOutlineBorders(CellBorderType.Hair, Color.Black);

... но это не работает - в этой верхней строке (строка "1") не отображаются границы:

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

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

Вот фрагмент кода для этой верхней строки, показывающий, как добавляется одна ячейка:

Cell PAItemCell = customerWorksheet.Cells[rowToPopulate, PAITEMCODE_COL];
PAItemCell.PutValue(frbdbc.PAItemCode, true);
var paiStyle = PAItemCell.GetStyle();
paiStyle.Font.Name = fontForSheets;
paiStyle.IsTextWrapped = false;
PAItemCell.SetStyle(paiStyle);

И вот как границы добавляются к части данных листа (теоретически, это должно работать и для верхней строки, даже без необходимости вышеописанной попытки):

private void BorderizeDataPortionOfCustomerSheet()
{
    int rowsUsed = customerWorksheet.Cells.Rows.Count;
    int colsUsed = SHIPVARIANCE_COL;

    string bottomRightRange = string.Format("P{0}", rowsUsed);
    var range = customerWorksheet.Cells.CreateRange("A1", 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 = customerWorksheet.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);

    customerWorksheet.FreezePanes(FIRST_DATA_ROW, SHORTNAME_COL, rowsUsed, colsUsed);
}

person B. Clay Shannon    schedule 16.01.2017    source источник


Ответы (1)


Похоже, вы смешиваете вещи. Что ж, если вы применяете границу контура к диапазону «A1: P1» в своем коде в первую очередь, то, если вы снова применяете стиль/форматирование к ячейкам или указываете границы контура для диапазона (включая первую строку, а также ) опять же, это, безусловно, переопределит существующее форматирование, которое вы применяли ранее. Поэтому, пожалуйста, убедитесь, что вы правильно написали свой код, и оба сегмента кода не мешают форматированию друг друга.

Я работаю разработчиком поддержки / евангелистом в Aspose.

person Amjad Sahi    schedule 16.01.2017
comment
Я добавил второй код, потому что первый не работал: ни жирного шрифта, ни выравнивания по левому краю, ни фоновой окраски. Но все эти вещи работают сейчас. Хотя границы нет... почему бы и нет? Предыдущая окантовка была сделана для всего листа, и это сработало, пока я не переформатировал первую строку, так как первая попытка не сработала. - person B. Clay Shannon; 16.01.2017
comment
У меня та же проблема, я выбрал толстую внешнюю границу для столбца чисел, и в первой строке не будет отображаться верхняя граница. Верхняя граница появится только в том случае, если я перетащу столбец чисел на ячейку вниз. - person john; 11.12.2019
comment
@john, не могли бы вы вставить сюда свой пример кода (если вы используете Aspose.Cells), мы проверим и соответствующим образом обновим ваш сегмент кода. PS. Я работаю разработчиком поддержки / евангелистом в Aspose. - person Amjad Sahi; 12.12.2019