web-dev-qa-db-ja.com

POIで生成されたExcelファイルのセルに境界線を追加する

POIを使用してExcelファイルを生成しています。ワークシートの特定のセルに境界線を追加する必要があります。

どうすればこれを達成できますか?

35
jzd

セルで使用されるスタイルで境界線を設定すると、これが実現します。例:

style.setBorderBottom(HSSFCellStyle.BORDER_MEDIUM);
style.setBorderTop(HSSFCellStyle.BORDER_MEDIUM);
style.setBorderRight(HSSFCellStyle.BORDER_MEDIUM);
style.setBorderLeft(HSSFCellStyle.BORDER_MEDIUM);
54
jzd
HSSFCellStyle style=workbook.createCellStyle();
style.setBorderBottom(HSSFCellStyle.BORDER_THIN);
style.setBorderTop(HSSFCellStyle.BORDER_THIN);
style.setBorderRight(HSSFCellStyle.BORDER_THIN);
style.setBorderLeft(HSSFCellStyle.BORDER_THIN);
23
swamy

新しいApache poiバージョンでは:

XSSFCellStyle style = workbook.createCellStyle();
style.setBorderTop(BorderStyle.MEDIUM);
style.setBorderBottom(BorderStyle.MEDIUM);
style.setBorderLeft(BorderStyle.MEDIUM);
style.setBorderRight(BorderStyle.MEDIUM);
15
Mathias G.

ヘルパー関数:

_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でBorderを追加する場合、

_String cellAddr="$A$11:$A$17";
_

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

10
Maxwell Cheng

XSSF

ボーダースタイル

_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);
_

ボーダの色

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);
_
7
winklerrr

バージョン4.0.0以降、RegionUtil- methodsには新しいシグネチャが追加されました。例えば:

RegionUtil.setBorderBottom(BorderStyle.DOUBLE,
            CellRangeAddress.valueOf("A1:B7"), sheet);
1
Martin Pabst

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);
0
rogger2016