解決poi導(dǎo)出時單元格樣式被覆蓋問題
poi導(dǎo)出時單元格樣式被覆蓋
在poi操作時對每個單元格進(jìn)行樣式設(shè)置,出現(xiàn)的問題是單元格樣式被覆蓋了?
如何解決這一問題????
解決方法
這里使用到了CellStyle 的一個方法 void cloneStyleFrom(CellStyle var1);
創(chuàng)建一個不影響使用的cell 然后設(shè)置樣式
在創(chuàng)建一個新的cell使用
createCellStylecopy.cloneStyleFrom(oldercell.getCellStyle()); // 克隆出一個 style
其他的樣式可以在createCellStylecopy中設(shè)置,然后設(shè)置給新的cell
poi的cellstyle陷阱,樣式覆蓋
問題
cell.getCellStyle().setFont(font);
這句話本來只是想設(shè)置這一個單元格cell的字體樣式,但是實(shí)際上卻影響了很多個單元格的樣式。
問題出在了,Excel模板中這些單元格本來就是同一個樣式,get得到的樣式修改,影響的當(dāng)然也是全部的
解決方法
但是直接創(chuàng)建的樣式的話,會丟失Excel模板中原來就有的樣式,所以這里使用到了CellStyle 的一個方法
void cloneStyleFrom(CellStyle var1);
保證了既可以新建一個CellStyle,又可以不丟失原來的CellStyle 的樣式
問題的那段代碼可以寫成如下:
//解決單元格樣式覆蓋的問題 CellStyle cStyle = book.createCellStyle(); cStyle.cloneStyleFrom(cell.getCellStyle()); cStyle.setWrapText(true); cStyle.setFont(font); cell.setCellStyle(cStyle);
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Spring AOP之@Around,@AfterReturning使用、切不進(jìn)去的解決方案
Java HashMap 如何正確遍歷并刪除元素的方法小結(jié)
Java多線程Queue、BlockingQueue和使用BlockingQueue實(shí)現(xiàn)生產(chǎn)消費(fèi)者模型方法解析
詳解spring+springmvc+mybatis整合注解

