在做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); )
於是問題解決了!!
最後,只想說的是網上的答案拜託不要再互相抄襲了,很煩。