关于PoiUtil工具类整理过程中的一些问题

我的上一篇博文已经说了为什么会去整理PoiUtil这个工具类,整理的过程其实也是有趣又漫长(耗时差不多两天)的过程,期间遇到的一些问题做记录如下:

1、导出多sheet的excel,sheet样式丢失问题

利用低版本poi-3.2-FINAL-20081019,通过多sheet的excel模版,导出excel后,导出的excel文件中,前面8-9个sheet都没有问题,之后的sheet在wps中显示一片空白,用微软的excel查看,数据还在,样式丢失。由于项目中用到的办公套件是金山的,所以微软下样式丢失的问题,这里不予考虑。

上apacha的官网,发现poi的版本都到3.9了,尝试下了最新的poi jar包,竟然很完美的解决了wps下导出excel样式丢失的问题(这点网友可以作为参考)。惬意poi 3.5及以后的包都需要jdk1.5及以上的支持,jdk1.4是用不了的。只能说很遗憾,我跟poi3.5+是无缘了。这也是我们考虑sheet复制的一个技术原因。

2、单元格背景色和边框色拷贝不对问题

在PoiUtil工具类能够完成基本的sheet复制之后,颜色的问题出现了。事情大概是这样的,通过java代码从源sheet的单元格获取的边框和前景色的色值和通过wps查看源excel的色值对应不上,具体说,单元格实际的色值是红色,通过java代码拿到的是粉色,这就造成了复制后sheet跟源sheet还是有差别的。

至于为什么poi拿到的颜色是不对,这个问题,暂时没法去深究了,作为项目的一个解决方案,在PoiUtil中提供了两个工具方法(setMForeColor修改HSSFColor.YELLOW的色值,setMBorderColor修改PINK的色值),在拷贝sheet之前,手工调用这两个方法,可以定义自己的色值。这样poi在使用YELLOW或者PINK的时候,就是我们需要的颜色了。

3、对合并区域的处理

网上较早的代码是通过Region来实现单元格的合并,其实这个类已经过时了,在这里我改成了通过CellRangeAddress完成合并单元格的设置。

4、关于cell背景色的色值问题

细心的同学会发现,通过poi获取单元格的背景色,其色值永远是HSSFColor.AUTOMATIC(index:64)。


你可能感兴趣的:(关于PoiUtil工具类整理过程中的一些问题)