我知道我们可以使用sheet.addMergedRegion(range)合并单元格。我想知道如何删除合并。
- 我们可以使用sheet.removeMergedRegion(int)
- 如果是,那么告诉我应该争论什么
- 合并单元格中存在的数据将会发生什么情况。
快速回答
- Yes
- 工作表中合并区域的id
- 数据保存在该区域的第一个单元格中,其他单元格将为空
解释
您可以使用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);
}
当您执行此操作时,合并区域的内容将保留在该区域的第一个单元格中(左上角的单元格)。其他单元格将有空内容。
Example:如果您已将(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);
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)