關於PoiUtil工具類整理過程當中的一些問題

個人上一篇博文已經說了爲何會去整理PoiUtil這個工具類,整理的過程其實也是有趣又漫長(耗時差很少兩天)的過程,期間遇到的一些問題作記錄以下: java

一、導出多sheet的excel,sheet樣式丟失問題 工具

利用低版本poi-3.2-FINAL-20081019,經過多sheet的excel模版,導出excel後,導出的excel文件中,前面8-9個sheet都沒有問題,以後的sheet在wps中顯示一片空白,用微軟的excel查看,數據還在,樣式丟失。因爲項目中用到的辦公套件是金山的,因此微軟下樣式丟失的問題,這裏不予考慮。 spa

上apacha的官網,發現poi的版本都到3.9了,嘗試下了最新的poi jar包,居然很完美的解決了wps下導出excel樣式丟失的問題(這點網友能夠做爲參考)。愜意poi 3.5及之後的包都須要jdk1.5及以上的支持,jdk1.4是用不了的。只能說很遺憾,我跟poi3.5+是無緣了。這也是咱們考慮sheet複製的一個技術緣由。 excel

二、單元格背景色和邊框色拷貝不對問題 io

在PoiUtil工具類可以完成基本的sheet複製以後,顏色的問題出現了。事情大概是這樣的,經過java代碼從源sheet的單元格獲取的邊框和前景色的色值和經過wps查看源excel的色值對應不上,具體說,單元格實際的色值是紅色,經過java代碼拿到的是粉色,這就形成了複製後sheet跟源sheet仍是有差異的。 jdk

至於爲何poi拿到的顏色是不對,這個問題,暫時無法去深究了,做爲項目的一個解決方案,在PoiUtil中提供了兩個工具方法(setMForeColor修改HSSFColor.YELLOW的色值,setMBorderColor修改PINK的色值),在拷貝sheet以前,手工調用這兩個方法,能夠定義本身的色值。這樣poi在使用YELLOW或者PINK的時候,就是咱們須要的顏色了。 方法

三、對合並區域的處理 技術

網上較早的代碼是經過Region來實現單元格的合併,其實這個類已通過時了,在這裏我改爲了經過CellRangeAddress完成合並單元格的設置。 數據

四、關於cell背景色的色值問題 項目

細心的同窗會發現,經過poi獲取單元格的背景色,其色值永遠是HSSFColor.AUTOMATIC(index:64)。

相關文章
相關標籤/搜索