poi 读取excel(xls文件)中自定义的颜色

在处理Excel03格式文件时,poi无法准确读取自定义颜色。通过对MS-XLS文档的研究,发现原因是poi未处理XFExt记录。通过重写HSSFWorkbook和UnknownRecord类,新增XFExt_0X87D_Record和XFExtProp类,可以获取自定义的前景色、背景色和字体颜色。在获取颜色信息时使用自定义方法。
摘要由CSDN通过智能技术生成

最近发现在用poi读取excel03格式文件时,不能很好的读取到表格中自定义的颜色值,cell.getCellStyle().getFillForegroundColorColor();只能取到预定义颜色的索引值。经过对poi研究,03格式的xls文件时采用的[MS-XLS]: Excel Binary File Format (.xls) ,biff8的格式,参考[MS-XLS]: Excel Binary File Format (.xls) Structure | Microsoft Docs  ,poi没有对record XFExt进行处理,它是excel的单元格格式的扩展对象,poi解释成了UnknownRecord对象,sid为0x087D,查看官方文档,对象的结构如下:

 

 

 稍微解释一下,XFExt对象里面ixfe标识扩展的是哪个单元格格式,cexts标识有几个扩展对象,扩展对象为ExtProp,ExtProp对象中extType是扩展的类型,我们要用到4,5,13,分别是foregroundcolor,backgroundcolor,fontcolor,边框的颜色,我就没有处理了,FullColorExt是颜色对象,我只取类型为2时的RGB格式。

下面看看怎么扩展我们的poi程序,

1、通过分析poi代码,需要重写org.apache.poi.hssf.usermodel.HSSFWorkbook和org.apache.poi.hssf.record.UnknownRecord,我的办法是拷贝这两个文件的源

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值