I want to count how many cells have been merged in row? I merged (scale) it in Excel, and in Java I want display for example: "Merged cells: 4" (A1, B1, C1, D1)?
Asked
Active
Viewed 1,403 times
0
-
Have you tried [MergedRegion](https://poi.apache.org/apidocs/org/apache/poi/ss/usermodel/Sheet.html#getMergedRegion%28int%29?) – PbxMan Mar 27 '14 at 12:00
-
Try http://stackoverflow.com/a/20677211/624003 – Sankumarsingh Mar 27 '14 at 12:28
-
Ok it helped me. But I don't know how Merged Region set index. I have 14 region and it is ok, but range is: 1. first column: 33 last column 35 first row: 0 last row 0 2. first column: 10 last column 11 first row: 1 last row 1 3. first column: 20 last column 23 first row: 0 last row 0 How is determined the order of? – faszynski Mar 27 '14 at 13:12
1 Answers
0
Sheet sheet = workbook.getSheetAt(1);
Iterator<Row> rowIterator = sheet.iterator();
while(rowIterator.hasNext()) {
Row row = rowIterator.next();
Iterator<Cell> cellIterator = row.iterator();
while(cellIterator.hasNext()) {
Cell currentCell = cellIterator.next();
// To get values of the merged cells
for(int i = 0; i < sheet.getNumMergedRegions(); i++) {
CellRangeAddress region = sheet.getMergedRegion(i);
int colIndex = region.getFirstColumn(); // no of columns merged
int rownum = region.getFirstRow(); // no of rows merged
System.out.println(i);
if(rownum == currentCell.getRowIndex() && colIndex == currentCell.getColumnIndex()) {
System.out.println(region.getLastColumn() + " " + region.getFirstColumn());
System.out.println("merged cell name " + sheet.getRow(rownum).getCell(colIndex).getStringCellValue());
}
}
}
}

Jathin
- 1
- 2