在做POI处理Excel的时候碰到的一个问题,就是POI列合并的问题,如图:
因为对POI的套路不是很熟,所以也是摸索的写着,一开始是这么写的
先不论写没写对,导出的结果是这样的
我擦咧!!!为啥会显示在上面???至今这个问题我也没搞懂
于是,我又改代码
改成这样:
结果是这样的:
干脆不显示了,我那个火大啊!!!一天时间全浪费在这上面了
还是在百度上面找答案,说到这里,不得不吐槽百度上面的答案了,千篇一律,互相抄袭转载,难道你们碰到永远是一样的问题??。有些还好,遇到问题会贴出来。有些答案根本说的不明不白,受众不一样,像我这样的菜鸟根本不能理解。
解决问题的参考的文章在这:
http://blog.csdn.net/zhangxinyuneil/article/details/34139393
看了下,发现这位博主的bodyCell.setCellVlue();是写在上面的,如下图:
我好像明白了什么,又不太确信
我的List<Map>数据是这样的
要说一下的是一开始我List<Map>的值是【{“count“=共计””}{“product_name”=“xxx元”}{"product_name"=“”}{。。。}{。。。}】这样的,我只是把list里最后一个改了
这个map里的第下标为6是个 空 ,这里很重要!!!就因为这里是空,所以无法判断有没有设值,我老以为合并的第二个单元格算作第二列,于是我把{“product_name”=“xxx元”}的值放到了{“product_price”=“”}里,这个下标为6,于是导出数据正确了。。。
这个POI的套路是
合并了的0到5列 虽然是一个单元格,但它依然看作是0到5列,于是第一个合并的单元格里设值下标是0,但是第二个单元格设值下标却是6
( 如:row.createCell(6).setCellValue(params.get(params.size()-1).get("product_price").toString); )
于是问题解决了!!
最后,只想说的是网上的答案拜托不要再互相抄袭了,很烦。