如何使用 apache POI java 库取消合并电子表格中的单元格
How to unmerge cells in a spreadsheet using apache POI java library
我们可以使用 sheet.addMergedRegion(rowFrom,rowTo,colFrom,colTo);
在 sheet 中添加合并的单元格,但我已经有一个 sheet 其中包含合并的单元格,我想取消合并这些单元格。
有没有什么方法可以在不使用 Apache POI 创建新的 sheet 的情况下取消合并 sheet 的单元格?
正在将评论提升为答案...
你想要的方法是Sheet.removeMergedRegion(int)
这会获取您在添加区域时获得的区域索引。否则,您可以使用 getNumMergedRegions() and getMergedRegion(int) 遍历区域以找到要删除的区域的索引
我刚刚发现在每个区域方法之后都会在内部检查现有区域的数量。例如。删除区域 1 后,所有内容都是新计算的,例如大小为 previousSize-1 并且 sheet.getNumMergedRegions() 也少了一个。所以对我来说,我将所有区域添加到列表中并从 sheet 中删除它们。我总是使用 id 0,因为每次都会重新计算 id。
for(int i = 0; i<numOfRegion;i++)
{
regions.add(sheet.getMergedRegion(0));
sheet.removeMergedRegion(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);
}
}
我们可以使用 sheet.addMergedRegion(rowFrom,rowTo,colFrom,colTo);
在 sheet 中添加合并的单元格,但我已经有一个 sheet 其中包含合并的单元格,我想取消合并这些单元格。
有没有什么方法可以在不使用 Apache POI 创建新的 sheet 的情况下取消合并 sheet 的单元格?
正在将评论提升为答案...
你想要的方法是Sheet.removeMergedRegion(int)
这会获取您在添加区域时获得的区域索引。否则,您可以使用 getNumMergedRegions() and getMergedRegion(int) 遍历区域以找到要删除的区域的索引
我刚刚发现在每个区域方法之后都会在内部检查现有区域的数量。例如。删除区域 1 后,所有内容都是新计算的,例如大小为 previousSize-1 并且 sheet.getNumMergedRegions() 也少了一个。所以对我来说,我将所有区域添加到列表中并从 sheet 中删除它们。我总是使用 id 0,因为每次都会重新计算 id。
for(int i = 0; i<numOfRegion;i++)
{
regions.add(sheet.getMergedRegion(0));
sheet.removeMergedRegion(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);
}
}