最近要写excel导出,用了easypoi。有个需求需要根据字段的值判断,然后动态改变某个单元格的值,网上搜了搜相关资料试了试但是都不行。无奈只能打断点一步步跟。大家都知道wook下有sheet下有row下有cell。
按照这个思路,果然通过row可以获取到cell。cell有个方法setCellStyle()。这个无疑就是改变颜色了,点进去里面有个getFillForegroundColor()设置背景颜色。
经过多次重启测试,还是不行。继续看里面的方法,终于找到了,设置背景色之前要调用setFillForegroundColor()这个方法。注释上也写的很清楚。
果然颜色改变了,不过通过这种方式会改变整个行的颜色,需求是改变单元格的颜色,继续研究。果然通过wook.createCellStyle(),会创建一个新的样式。最新测试可以了。
区别就是,通过cell获得cellStyle获取的是存在的样式,通过wook获取的是全新的样式。因为老的样式很可能包含了设置全部背景色,导致改变了整个行的颜色。就研究到这里吧。下班了