`
xin_feng_08
  • 浏览: 11771 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

使用POI在excel文件单元格实现对角线

 
阅读更多

 

        查看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接口方式有错才没生效,有了解的人请回复一下,谢谢。

 

 

  • 大小: 20.2 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics