POI获取excel单元格背景色转换为awt.Color

最近,老大要求做的项目系统能将excel模板导入,并兼容excel2003和2007,研究了一下POI。

说重点!遇到的一个难题是如何将excel自定义的单元格背景色转换为awt.Color。


POI获取单元格背景色,用的方法是getFillForegroundColorColor(),就是获取前景色的方法。得到的对象是HSSFColor或者XSSFColor。

HSSFColor.getTriplet()方法,能获得颜色的rgb值,Alpha值设为0xff。

XSSFColor.getARgb()也能获得argb值,但是每个值都是一个有符号的2进制数,将其当做无符号数来转化,就是awt.Color对应的argb值了,比如Alpha=-1,二进制就是11111111,当做无符号数,换算就是Alpha=255了,这时对应的argb值就是awt.Color的了。换算方法:

private static int change(int number){
return ((number & 0x0f0) >> 4)*16 +(number & 0x0f);
}

获得ARGB值,然后转换颜色就很简单了:new java.awt.Color(R, G, B, A)。


较低版本的POI.jar可能没有方法getFillForegroundColorColor(),只有getFillForegroundColor(),得到的是一个short值,可以通过方法:

HSSFWorkbook.getCustomPalette().getColor(Short index);获得HSSFColor。

如果要兼容2007,处理XSSFColor,如果没有getFillForegroundColorColor(),那还是换高版本吧,因为XSSFWorkbook好像没有对应的HSSFPalette对象。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值