Я сейчас создаю несколько листов Excel на C # с NPOI. Когда я устанавливал разные границы для некоторых ячеек, я обнаружил странное поведение. Например, если я хочу, чтобы первая ячейка (0,0) имела границу справа, а вторая ячейка (0,1) - границу справа и снизу, я пишу:
XSSFWorkbook wb = new XSSFWorkbook();
ISheet sheet = wb.CreateSheet();
IRow row = sheet.CreateRow(0);
ICell cell = row.CreateCell(0);
ICellStyle styleRight = wb.CreateCellStyle();
styleRight.BorderRight = BorderStyle.Medium;
cell.CellStyle = styleRight;
row = sheet.CreateRow(1);
cell = row.CreateCell(0);
ICellStyle styleBottomRight = wb.CreateCellStyle();
styleBottomRight.BorderRight = BorderStyle.Medium;
styleBottomRight.BorderBottom = BorderStyle.Medium;
cell.CellStyle = styleBottomRight;
это портит мой результат и дает моей первой ячейке (0,0) нижнюю границу.
Однако, если я изменю порядок границ для второго стиля ячейки:
row = sheet.CreateRow(1);
cell = row.CreateCell(0);
ICellStyle styleBottomRight = wb.CreateCellStyle();
styleBottomRight.BorderBottom = BorderStyle.Medium;
styleBottomRight.BorderRight = BorderStyle.Medium;
cell.CellStyle = styleBottomRight;
Я получаю желаемый результат с выделенной рамкой на моей первой ячейке и двумя границами на второй ячейке.
Почему так случилось? Почему порядок двух команд меняет результат? Почему styleBottomRight
influence стиль первой ячейки? Я использую NPOI v2.5.1 в .Net Core 3.1