2015-02-17 3 views
6

Есть ли способ добавить границы к диапазону с использованием Java с Apache POI?JAVA Apache POI Excel: добавить границы к диапазону ячеек

Как A1: B2 должен иметь толщину границы верхнего и нижнего левого правого края?

Я знаю, как создать & применять стили для отдельных ячеек, и я мог бы перебирать ячейки и применять соответствующие стили, но я уверен, что есть более простой способ.

ответ

9

Я был в состоянии понять это. На самом деле есть образец на странице apache poi, которую я просто не нашел с ключевыми словами, которые я искал.

CellRangeAddress region = CellRangeAddress.valueOf(A1:B2); 
short borderStyle = CellStyle.BORDER_MEDIUM; 
RegionUtil.setBorderBottom(borderStyle, region, activeSheet, excelWorkbook); 
RegionUtil.setBorderTop(borderStyle, region, activeSheet, excelWorkbook); 
RegionUtil.setBorderLeft(borderStyle, region, activeSheet, excelWorkbook); 
RegionUtil.setBorderRight(borderStyle, region, activeSheet, excelWorkbook); 
3

Все изменилось в 3,16

CellRangeAddress region = new CellRangeAddress(6, 8, 1, 10); 
RegionUtil.setBorderBottom(BorderStyle.THIN, region, sheet); 
RegionUtil.setBorderTop(BorderStyle.THIN, region, sheet); 
RegionUtil.setBorderLeft(BorderStyle.THIN, region, sheet); 
RegionUtil.setBorderRight(BorderStyle.THIN, region, sheet); 
0

RegionUtil перевернул все, кроме белого до черного цвета фона в моем случае. Это моё решение:

public final class BorderUtils { 

    public static void setBorder(Sheet sheet, BorderStyle borderStyle, CellRangeAddress region) { 
     setBorderTop(sheet, borderStyle, region); 
     setBorderBottom(sheet, borderStyle, region); 
     setBorderLeft(sheet, borderStyle, region); 
     setBorderRight(sheet, borderStyle, region); 
    } 

    public static void setBorderTop(Sheet sheet, BorderStyle borderStyle, CellRangeAddress region) { 
     Row row = sheet.getRow(region.getFirstRow()); 
     for (int i=region.getFirstColumn() ; i<=region.getLastColumn() ; i++) { 
      Cell cell = row.getCell(i); 
      CellStyle cellStyle = cloneCellStyle(sheet, cell); 
      cellStyle.setBorderTop(borderStyle); 
      cell.setCellStyle(cellStyle); 
     } 
    } 

    public static void setBorderBottom(Sheet sheet, BorderStyle borderStyle, CellRangeAddress region) { 
     Row row = sheet.getRow(region.getLastRow()); 
     for (int i=region.getFirstColumn() ; i<=region.getLastColumn() ; i++) { 
      Cell cell = row.getCell(i); 
      CellStyle cellStyle = cloneCellStyle(sheet, cell); 
      cellStyle.setBorderBottom(borderStyle); 
      cell.setCellStyle(cellStyle); 
     } 
    } 

    public static void setBorderLeft(Sheet sheet, BorderStyle borderStyle, CellRangeAddress region) { 
     for (int i=region.getFirstRow() ; i<=region.getLastRow() ; i++) { 
      Cell cell = sheet.getRow(i).getCell(region.getFirstColumn()); 
      CellStyle cellStyle = cloneCellStyle(sheet, cell); 
      cellStyle.setBorderLeft(borderStyle); 
      cell.setCellStyle(cellStyle); 
     } 
    } 

    public static void setBorderRight(Sheet sheet, BorderStyle borderStyle, CellRangeAddress region) { 
     for (int i=region.getFirstRow() ; i<=region.getLastRow() ; i++) { 
      Cell cell = sheet.getRow(i).getCell(region.getLastColumn()); 
      CellStyle cellStyle = cloneCellStyle(sheet, cell); 
      cellStyle.setBorderRight(borderStyle); 
      cell.setCellStyle(cellStyle); 
     } 
    } 

} 
Смежные вопросы