2015-08-17 55 views
1

取消合并单元格在电子表格中,我们可以使用sheet.addMergedRegion(rowFrom,rowTo,colFrom,colTo);在板材加合并单元格,但我已经与它合并单元格表,我想取消合并这些细胞。如何使用Apache POI的Java库

有什么办法取消合并片的细胞不会产生使用Apache POI新表?

+0

不会[Sheet.removeMergedRegion(https://poi.apache.org/apidocs/org/apache/poi/ss/usermodel/Sheet.html#removeMergedRegion%28int%29)是吗? – Gagravarr

+0

感谢您的回复,但我无法使用sheet.removeMergedRegion解除合并! –

+0

为什么不呢?你会得到什么错误?出了什么问题?什么不起作用? – Gagravarr

回答

1

我刚才发现在每个区域方法之后,内部会检查现有区域的数量。例如。在删除区域1之后,一切都是新计算出来的,如size是previousSize-1,而sheet.getNumMergedRegions()也是一样。所以对于我来说,我将所有区域添加到列表中并从表格中删除它们。因为每次都重新计算id,所以我总是使用id 0。

​​
0

出于某种原因,下面的代码没有立即删除所有合并的地区:

logger.info("Number of merged regions = " + sheet.getNumMergedRegions()); 
for (int i = 0; i < sheet.getNumMergedRegions(); i++) { 
    logger.info("Removing merged region " + (i + 1)); 
    sheet.removeMergedRegion(i); 
} 
logger.info("\nNumber of merged regions = " + sheet.getNumMergedRegions()); 

在控制台中我看到这一点:

Number of merged regions = 7 
Removing merged region 1 
Removing merged region 2 
Removing merged region 3 
Removing merged region 4 

Number of merged regions = 3 

修复:

while (sheet.getNumMergedRegions() > 0) { 
    logger.info("Number of merged regions = " + sheet.getNumMergedRegions()); 
    for (int i = 0; i < sheet.getNumMergedRegions(); i++) { 
     logger.info("Removing merged region " + (i + 1)); 
     sheet.removeMergedRegion(i); 
    } 
}