Как я могу добавить границы вокруг диапазона электронной таблицы (ячейки 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.