public static void main(String[] args) throws Exception {
File inputFile = new File("d:\test.xlsx");
InputStream is = new FileInputStream(inputFile);
Workbook wb = new XSSFWorkbook(is);
Sheet sheet = wb.getSheetAt(0);
// 遍历合并区域
for (int i = 0; i < sheet.getNumMergedRegions(); i++) {
CellRangeAddress region = sheet.getMergedRegion(i); //
int colIndex = region.getFirstColumn(); // 合并区域首列位置
int rowNum = region.getFirstRow(); // 合并区域首行位置
System.out.println("第[" + i + "]个合并区域:" + sheet.getRow(rowNum).getCell(colIndex).getStringCellValue());
}
// 直接调用,我知道合并单元格的位置:
System.out.println(sheet.getRow(0).getCell(0).getStringCellValue());
System.out.println(sheet.getRow(3).getCell(2).getStringCellValue());
wb.close();
is.close();
}
} Output:
第[0]个合并区域:foo
第[1]个合并区域:bar
foo
bar
Used test.xlsx:
To put it bluntly, the merged area is indexed by the first column and first row. If you know which number your merged area is in the sheet, you don’t need to traverse, just adjust sheet.getMergedRegion() directly.
POI 3.12
Dependent packages:
Code:
public class POITest {
}
Output:
Used test.xlsx:
To put it bluntly, the merged area is indexed by the first column and first row. If you know which number your merged area is in the sheet, you don’t need to traverse, just adjust
sheet.getMergedRegion()
directly.