POI生成的Excel文件如何为单元格添加边框

52
我正在使用POI生成Excel文件,需要在工作表中的特定单元格添加边框。如何实现这个功能?
8个回答

67

使用单元格中使用的样式来设置边框就可以实现这一点。 示例:

style.setBorderBottom(HSSFCellStyle.BORDER_MEDIUM);
style.setBorderTop(HSSFCellStyle.BORDER_MEDIUM);
style.setBorderRight(HSSFCellStyle.BORDER_MEDIUM);
style.setBorderLeft(HSSFCellStyle.BORDER_MEDIUM);

1
这对我有用,但我仍然愿意接受更好的解决方案。特别是那些不涉及新样式来改变边框的解决方案。 - jzd
样式是最常用的方法,Excel通常使用样式或绘图来完成这些事情。 - Gagravarr
@Gagravarr,谢谢。我猜只是因为同一文本需要两种样式,一种有边框,一种没有,这似乎很麻烦。特别是如果你想在外边缘加强边框。我希望有更好的方法。 - jzd
我能建议的唯一事情就是尝试在Excel中完成,并查看Excel文件本身的操作。我有强烈的怀疑,你会发现Excel会创建样式来实现这个... - Gagravarr

38
在较新的Apache POI版本中:
XSSFCellStyle style = workbook.createCellStyle();
style.setBorderTop(BorderStyle.MEDIUM);
style.setBorderBottom(BorderStyle.MEDIUM);
style.setBorderLeft(BorderStyle.MEDIUM);
style.setBorderRight(BorderStyle.MEDIUM);

25
HSSFCellStyle style=workbook.createCellStyle();
style.setBorderBottom(HSSFCellStyle.BORDER_THIN);
style.setBorderTop(HSSFCellStyle.BORDER_THIN);
style.setBorderRight(HSSFCellStyle.BORDER_THIN);
style.setBorderLeft(HSSFCellStyle.BORDER_THIN);

15

XSSF

BorderStyle

使用 XSSFCellStyle.BORDER_MEDIUMXSSFBorderFormatting.BORDER_MEDIUM(这两个枚举类型指的是同一个值):

final 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)(顶部、左侧、右侧同样适用):

final XSSFCellStyle cellStyle = workbook.createCellStyle();
final 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
做得好,@winklerrr,终于有人读问题了!它是XSSF而不是HSSF。 - Stosh15

15

一个辅助函数:

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


5

如果你正在使用 org.apache.poi.ss.usermodel(而不是HSSF或XSSF),你可以使用:

style.setBorderBottom(BorderStyle.THIN);
style.setBorderTop(BorderStyle.THIN);
style.setBorderLeft(BorderStyle.THIN);
style.setBorderRight(BorderStyle.THIN);

所有边框样式都可以在Apache官方文档的这里找到。

3

从版本4.0.0开始,RegionUtil方法具有新的签名。例如:

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

1
要在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);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接