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

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值