0

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)?

faszynski
  • 419
  • 3
  • 11
  • 26
  • 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 Answers1

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