Добавить границы для ячеек в созданном POI файле Excel - PullRequest
34 голосов
/ 19 апреля 2011

Я использую POI для создания файла Excel. Мне нужно добавить границы для определенных ячеек на листе.

Как мне это сделать?

Ответы [ 7 ]

54 голосов
/ 19 апреля 2011

Настройка границ в стиле, используемом в ячейках, сделает это.Пример:

style.setBorderBottom(HSSFCellStyle.BORDER_MEDIUM);
style.setBorderTop(HSSFCellStyle.BORDER_MEDIUM);
style.setBorderRight(HSSFCellStyle.BORDER_MEDIUM);
style.setBorderLeft(HSSFCellStyle.BORDER_MEDIUM);
22 голосов
/ 15 февраля 2012
HSSFCellStyle style=workbook.createCellStyle();
style.setBorderBottom(HSSFCellStyle.BORDER_THIN);
style.setBorderTop(HSSFCellStyle.BORDER_THIN);
style.setBorderRight(HSSFCellStyle.BORDER_THIN);
style.setBorderLeft(HSSFCellStyle.BORDER_THIN);
14 голосов
/ 08 марта 2017

В более новых версиях apache poi:

XSSFCellStyle style = workbook.createCellStyle();
style.setBorderTop(BorderStyle.MEDIUM);
style.setBorderBottom(BorderStyle.MEDIUM);
style.setBorderLeft(BorderStyle.MEDIUM);
style.setBorderRight(BorderStyle.MEDIUM);
10 голосов
/ 20 февраля 2017

вспомогательная функция:

private void setRegionBorderWithMedium(CellRangeAddress region, Sheet sheet) {
        Workbook wb = sheet.getWorkbook();
        RegionUtil.setBorderBottom(CellStyle.BORDER_MEDIUM, region, sheet, wb);
        RegionUtil.setBorderLeft(CellStyle.BORDER_MEDIUM, region, sheet, wb);
        RegionUtil.setBorderRight(CellStyle.BORDER_MEDIUM, region, sheet, wb);
        RegionUtil.setBorderTop(CellStyle.BORDER_MEDIUM, region, sheet, wb);
    }

Если вы хотите добавить границу в Excel, тогда

String cellAddr="$A$11:$A$17";

setRegionBorderWithMedium(CellRangeAddress.valueOf(cellAddr1), sheet);

6 голосов
/ 10 августа 2015

XSSF

BorderStyle

Используйте XSSFCellStyle.BORDER_MEDIUM или XSSFBorderFormatting.BORDER_MEDIUM (оба перечисления относятся к одному значению):

XSSFCellStyle cellStyle = workbook.createCellStyle();

cellStyle.setBorderTop(XSSFCellStyle.BORDER_MEDIUM);
cellStyle.setBorderRight(XSSFCellStyle.BORDER_MEDIUM);
cellStyle.setBorderBottom(XSSFCellStyle.BORDER_MEDIUM);
cellStyle.setBorderLeft(XSSFCellStyle.BORDER_MEDIUM);

cell.setCellStyle(cellStyle);

BorderColor

Используйте setBorderColor(XSSFCellBorder.BorderSide.BOTTOM, XSSFColor) или setBottomBorderColor(XSSFColor) (эквивалент для верхнего, левого, правого):

XSSFCellStyle cellStyle = workbook.createCellStyle();
XSSFColor color = new XSSFColor(new java.awt.Color(128, 0, 128));

cellStyle.setTopBorderColor(color);
cellStyle.setRightBorderColor(color);
cellStyle.setBottomBorderColor(color);
cellStyle.setLeftBorderColor(color);

cell.setCellStyle(cellStyle);
1 голос
/ 07 декабря 2018

Начиная с версии 4.0.0 для RegionUtil -методы имеют новую подпись.Например:

RegionUtil.setBorderBottom(BorderStyle.DOUBLE,
            CellRangeAddress.valueOf("A1:B7"), sheet);
0 голосов
/ 20 апреля 2017

Чтобы создать рамку в Apache POI, вам нужно ...

1: создать стиль

final XSSFCellStyle style = workbook.createCellStyle();

2: Затем вы должны создать границу

style.setBorderBottom( new XSSFColor(new Color(235,235,235));

3: Затем вы должны установить цвет этой границы

style.setBottomBorderColor( new XSSFColor(new Color(235,235,235));

4: затем применить стиль к ячейке

cell.setCellStyle(style);
...