背景
EasyExcel(根據條件動態合併單元格的重複數據))_Violet-CSDN博客_easyexcel動態合併單元格
現有的訂單導出是使用的easyExcel完成的.對於相同單元格的合併是自定義的策略,問題是對於重複單元格的值會合並,表格求和時值會虛高
現需要對合並格做修改,做到值只有一個。
思路
sheet合併代碼主要爲: sheet.addMergedRegionUnsafe(cellRangeAddr);
問題是爲什麼合併單元格時會帶上原有的數據,猜測是刪除合併區域問題(removeMergedRegion)
關鍵代碼:
1
|
// 比較當前行單元格與上一行是否相同,相同合併當前單元格與上一行
|
- 查看了有關問題解決方案:
- POI - User - sheet.removeMergedRegion throwing Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException
- poi導出excel時,合併單元格後,求和不正確,即“假”合併_yupeikang的專欄-CSDN博客
- 猜測是刪除合併單元(removeMergedRegion)並沒有刪除包含的數據
- 準備一次合併所有相同單元格來實現
- 原有合併策略是根據行 列循環合併的,無法做到一次性合併,修改合併策略代價比較大,方案不可行。
- 通過寫Excel時,如果一列有合併單元格時,用excel對該列求和,會重複計算 · Issue #1673 · alibaba/easyexcel 知道,需要將中間值置空來解決
- 嘗試將合併cell 值設置爲空
- 將當前cell值設置爲空後,會導致無法觸發值相同的條件判斷,最多隻能合併兩行
- 修改合併條件判斷,當單元格不是第一列且當前單元格第一列與上一列值相同,且當前單元格與上一單元格相同或 上一單元格爲空時,值設置空.
- 測試可行 已解決
解決代碼:
1
|
// 比較當前行單元格與上一行是否相同,相同合併當前單元格與上一行 //重複值處理
|