2013-04-02 5 views
7

Вот что я знаю, что до сих пор:Как определить, объединенные ячейки в определенной строке

  1. используется метод sheet.getNumMergedRegions(), чтобы получить число объединяемых областей в конкретном листе
  2. Вы петлевой через каждый счетчик и используйте метод sheet.getMergedRegion (i) и назначьте переменную CellRangeAddress
  3. Затем вы используете функцию isInRange (rowIndex, colIndex), чтобы увидеть, является ли конкретная ячейка частью объединенной области.

Но то, что я хотел сделать это: Я хочу увидеть, если это возможно, чтобы определить, объединенные ячейки, данные только конкретная строка. Как будто у меня есть определенная строка, я хочу знать количество всех объединенных регионов, найденных только под этой строкой.

Я был бы всегда благодарен, если кто-то может поделиться своими идеями или предложениями по этому вопросу.

+0

Каждая строка знает свой номер строки, поэтому я не понимаю, почему это будет отличаться от подхода, который вы уже описали в деталях. – jahroy

+0

Я согласен с @jahroy здесь. Вам просто нужно установить некоторые условия, чтобы настроить то, что вы упомянули, и у вас будет функция, которая делает именно то, о чем вы просите. –

ответ

8

Вот пример кода, который делает то, что вы хотите, я верю. GetNbOfMergedRegions возвращает, ну, количество объединенных регионов в определенной строке. Помните, что в POI номера строк начинаются с нуля!

package test; 

import java.io.File; 
import org.apache.poi.ss.usermodel.Sheet; 
import org.apache.poi.ss.usermodel.Workbook; 
import org.apache.poi.ss.usermodel.WorkbookFactory; 
import org.apache.poi.ss.util.CellRangeAddress; 

public class Main { 

    public static int getNbOfMergedRegions(Sheet sheet, int row) 
    { 
     int count = 0; 
     for(int i = 0; i < sheet.getNumMergedRegions(); ++i) 
     { 
      CellRangeAddress range = sheet.getMergedRegion(i); 
      if (range.getFirstRow() <= row && range.getLastRow() >= row) 
       ++count; 
     } 
     return count; 
    } 

    public static void main(String[] args) { 
     File file = new File("/Users/enicolas/Downloads/test.xls"); 
     try 
     { 
      Workbook wb = WorkbookFactory.create(file); // Line 409 for ref to the exception stack trace 
      Sheet sheet = wb.getSheetAt(0); 
      for(int row = 0; row < 20; ++row) 
      { 
       int n = getNbOfMergedRegions(sheet, row); 
       System.out.println("row [" + row + "] -> " + n + " merged regions"); 
      } 
      System.out.println(wb); 
     } 
     catch (Throwable e) 
     { 
      e.printStackTrace(); 
     } 
    } 
} 
Смежные вопросы