查看POI的API可以发现HSSFBorderFormatting.setBoderDiagonal接口,尝试使用这个接口并没有任何作用。
HSSFSheetConditionalFormatting f = sheet.getSheetConditionalFormatting();
HSSFConditionalFormattingRule r = f.createConditionalFormattingRule(ComparisonOperator.NOT_EQUAL, "\"NONE\"", null);
HSSFBorderFormatting boderF = r.createBorderFormatting();
boderF.setBackwardDiagonalOn(true);
boderF.setDiagonalBorderColor(new HSSFColor.BLACK().getIndex());
boderF.setBorderDiagonal(BorderFormatting.BORDER_THICK);
boderF.setBottomBorderColor(new HSSFColor.BLACK().getIndex());
boderF.setBorderBottom(BorderFormatting.BORDER_THICK);
HSSFConditionalFormattingRule[] rules = {r};
CellRangeAddress[] regions = {new CellRangeAddress(7, 7, 0, 0)};
f.addConditionalFormatting(regions, rules);
上面代码我设置了A8单元格的对角线和底边,得到结果只有底边生效了。无奈只能用画图方式实现对角线。
/*
* 在A1:A3之间cell(单位 分类)加入一条对角线
*/
HSSFPatriarch patriarch = sheet.createDrawingPatriarch();
HSSFClientAnchor a = new HSSFClientAnchor(0, 0, 1023, 255, (short)0, 0, (short)0, 2);
HSSFShapeGroup group = patriarch.createGroup(a);
group.setCoordinates(0, 0, 320, 276);
float verticalPointsPerPixel = a.getAnchorHeightInPoints(sheet) / Math.abs(group.getY2() - group.getY1());
EscherGraphics g = new EscherGraphics(group, wbook, Color.black, verticalPointsPerPixel);
EscherGraphics2d g2d = new EscherGraphics2d(g);
g2d.drawLine(0, 0, 320, 276);
下面的截图是两段代码的输出效果:
是不是我使用HSSFBorderFormatting.setBoderDiagonal接口方式有错才没生效,有了解的人请回复一下,谢谢。