Как я могу добавить границы вокруг диапазона электронной таблицы (ячейки Aspose)?

Я хочу добавить границы в диапазон в электронной таблице. Основываясь на некотором коде VB здесь, я попробовал это:

Range range = locationWorksheet.Cells.CreateRange(7, 0, 93, 6);

range.SetOutlineBorder(BorderType.TopBorder, CellBorderType.Thick, Color.Blue);
range.SetOutlineBorder(BorderType.BottomBorder, CellBorderType.Thick, Color.Blue);
range.SetOutlineBorder(BorderType.LeftBorder, CellBorderType.Thick, Color.Blue);
range.SetOutlineBorder(BorderType.RightBorder, CellBorderType.Thin, Color.Red);

... но это выталкивает большую часть данных на лист, как можно увидеть здесь:

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

...и здесь:

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

Так выглядел лист до добавления этих границ.

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

На самом деле, я тоже хочу внутренние границы, не только по краям, но обо всем по порядку.

Кстати, это также казалось очень "дорогой" операцией - создание отчета заняло гораздо больше времени с добавлением этого граничащего кода.

ОБНОВИТЬ

Я смог заставить его работать лучше, но это все еще портит мой формат. С этим кодом:

private void BorderizeDataPortionOfLocationSheet()
{
    int FUDGE_FACTOR = 5;
    int rowsUsed = locationWorksheet.Cells.Rows.Count + FUDGE_FACTOR;
    int colsUsed = locationWorksheet.Cells.Columns.Count; //QTY_COL; // last column
    string rangeBegin = RoboReporterConstsAndUtils.GetRangeLettersNumbersAsStr(1, 8);
    string rangeEnd = RoboReporterConstsAndUtils.GetRangeLettersNumbersAsStr(6, rowsUsed);
    Range entireSheetRange = locationWorksheet.Cells.CreateRange(rangeBegin, rangeEnd);

    CellsFactory cf = new CellsFactory();
    Style style = cf.CreateStyle();
    entireSheetRange.SetStyle(style);
    entireSheetRange.SetOutlineBorders(CellBorderType.Thin, Color.Black);
}

... Я получаю границу, которая не сбивает данные с листа:

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

Но он показал мое прекрасное форматирование, которое вы можете увидеть здесь, когда диапазон был без границ:

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

Как я могу получить свою границу и сохранить форматирование?

1 ответ

Решение

Ваш код для применения границ контура к диапазону правильный, поскольку я проверил его на последней версии Aspose.Cells для.NET 17.1.0 (доступна через разделы загрузки NuGet и Aspose). Обратите внимание, что установка границ контура не должна нарушать существующее форматирование ячеек, поскольку Range.SetOutlineBorder работает только на границах, однако, если вы хотите применить границу к каждой отдельной ячейке в диапазоне, существующее форматирование может быть перезаписано,

Я собираюсь опубликовать пример кода вместе с электронными таблицами ввода и вывода в вашей теме, созданной на форуме поддержки Aspose.Cells, и смиренно прошу вас поделиться своей входной таблицей вместе с исполняемым фрагментом кода на форуме поддержки Aspose.Cells для дальнейшей работы. расследование в случае сохранения проблемы.

var book = new Workbook(dataDir + "book1.xlsx");
var sheet = book.Worksheets[0];
var range = sheet.Cells.MaxDisplayRange;
//Setting outline border to range
range.SetOutlineBorder(BorderType.TopBorder, CellBorderType.Thick, Color.Blue);
range.SetOutlineBorder(BorderType.BottomBorder, CellBorderType.Thick, Color.Blue);
range.SetOutlineBorder(BorderType.LeftBorder, CellBorderType.Thick, Color.Blue);
range.SetOutlineBorder(BorderType.RightBorder, CellBorderType.Thin, Color.Red);

book.Save(dataDir + "output.xlsx");

Примечание: я работаю в качестве разработчика Evangelist в Aspose.

Другие вопросы по тегам