gpt4 book ai didi

java - 如何使用 POI 删除合并区域?

转载 作者:搜寻专家 更新时间:2023-11-01 01:43:09 40 4
gpt4 key购买 nike

我知道我们可以使用 sheet.addMergedRegion(range) 合并单元格。我想知道如何删除合并。

  1. 我们可以使用 sheet.removeMergedRegion(int)
  2. 如果是,请告诉我论点应该是什么
  3. 合并单元格中的数据会发生什么。

最佳答案

快速回答

  1. sheet中合并区域的id
  2. 数据保留在该区域的第一个单元格中,其他单元格将为空

说明

您可以使用 sheet.getMergedRegion(i) 获取合并区域,其中 i 是其在工作表中的标识符。

/* ... initialize your workbook and sheet here ... */

// Loop through every merged region in the sheet
for(int i=0; i < sheet.getNumMergedRegions(); ++i)
{
// Delete the region
sheet.removeMergedRegion(i);
}

当您这样做时,合并区域的内容将保留在该区域的第一个单元格(左上角的单元格)中。其他单元格的内容为空。

示例:如果您将(A1 和 A2)与内容“合并区域”合并,拆分的结果将是 (A2) 空和 (A1) 内容为“合并区域”。

请注意,这就是数据在内部存储的方式,即使您尝试获取包含在合并区域中的单元格的值也是如此。保持相同的例子,你将有:

CellReference ref = new CellReference("A1");
Row row = sheet.getRow( ref.getRow() );
Cell cell = row.getCell( ref.getCol() );
System.out.println( new DataFormatter().formatCellValue(cell) ); // Will print "merged region"

ref = new CellReference("A2");
row = sheet.getRow( ref.getRow() );
cell = row.getCell( ref.getCol() );
System.out.println( new DataFormatter().formatCellValue(cell) ); // Will print empty string

删除合并区域前后的行为相同。

更多信息

如果你想得到一个特定的合并区域来分割它,你必须在你的循环中添加一个条件来识别它:

// If we want to split the merged cell starting at D3
CellReference ref = new CellReference("D3");

for(int i=0; i < sheet.getNumMergedRegions(); ++i)
{
CellRangeAddress range = sheet.getMergedRegion(i);

if ( range.getFirstRow() == ref.getRow() && range.getLastRow() == ref.getCol() )
{
sheet.removeMergedRegion(i);
}
}

关于java - 如何使用 POI 删除合并区域?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22960368/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com