2013-04-02 36 views
7

Dưới đây là những gì tôi biết cho đến nay:Làm thế nào để Xác định tế bào hợp nhất trong một số Row

  1. Bạn sử dụng sheet.getNumMergedRegions() phương pháp để có được số lượng các khu vực sáp nhập trong một tờ đặc biệt
  2. Bạn loop thông qua mỗi lần đếm và sử dụng phương thức sheet.getMergedRegion (i) và gán cho biến CellRangeAddress
  3. Sau đó, bạn sử dụng hàm isInRange (rowIndex, colIndex) để xem liệu một ô cụ thể có phải là một phần của vùng đã hợp nhất hay không.

Nhưng những gì tôi muốn thực hiện là: Tôi muốn xem liệu có thể xác định các ô được hợp nhất chỉ cho một hàng cụ thể hay không. Giống như nếu tôi có một hàng nhất định, tôi muốn biết tổng số của tất cả các vùng được hợp nhất được tìm thấy trong hàng đó.

Tôi sẽ mãi biết ơn nếu có ai có thể chia sẻ ý tưởng hoặc đề xuất của họ về vấn đề này.

+0

Mọi hàng đều biết số hàng của chính nó, vì vậy tôi không thấy lý do tại sao điều này khác với cách bạn đã mô tả chi tiết hoàn hảo. – jahroy

+0

Tôi đồng ý với @jahroy tại đây. Bạn chỉ cần đặt một số điều kiện trong đó để tinh chỉnh những gì bạn đã đề cập và bạn sẽ có một chức năng thực hiện chính xác những gì bạn đang yêu cầu. –

Trả lời

8

Đây là mẫu mã thực hiện những gì bạn muốn tôi tin. Các getNbOfMergedRegions trả lại, tốt, số lượng các vùng được hợp nhất trong một hàng cụ thể. Hãy nhớ rằng trong số hàng POI bắt đầu từ số không!

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(); 
     } 
    } 
} 
Các vấn đề liên quan