2016-03-29 15 views
1

Varolan bir xlsm dosyasını apache POI ile değiştirmek istiyorum.Apache'de hücrenin doğrudan adreslenmesi POI

Yalnızca tek hücreleri değiştirmek zorunda kaldığımdan, tüm sayfa üzerinde döngü yapmak istemediğimden, ancak şu ana kadar bulduğum tüm örnekler bir satırdaki tüm satırların üzerinden ve tüm hücrelerin üzerinden geçmeyi önerir. Geçerli satır/sütun indeksi değiştirilecek olanla eşleşir.

Tek bir hücreyi doğrudan koordinatlarıyla almak için "rasgele erişim" modu yok mu? Gelecek vaat eden getCell method of the CellUtil class, yalnızca tam sayı koordinatının yerine bir satır nesnesine ihtiyaç duyar.

cevap

0

ondan, y levhadan birinci sıra alma ve daha sonra x hücreyi elde:

Row myRow = getRow(int x, sheet); 
Cell myCell = getCell(myRow, int y); 
+0

Bu, şu anda bunu yapıyorum, sadece tek bir yöntem olmadığı gibi bana garip geliyor Doğrudan hücre almak için Sheet sınıfında. – slup

1

Excel dosya biçimi, yani kullanılmamış + stillendirilmemiş satırlar ve (normal olarak) seyrek bir dosya biçimidir Hücreler normal olarak dosyadan atlanır. Yani, satır ve hücreleri getirirken boş değerleri kontrol etmeniz gerekir. Ancak, bundan başka, hücreleri doğrudan hemen getirebilirsiniz. bir (örn satır = 2, sütun = 1), sonra size şekline bağlı

CellReference ref = new CellReference("B3"); 

Workbook workbook = WorkbookFactory.create(new File("input.xls")); 
Sheet sheet = workbook.getSheetAt(0); 

Row r = sheet.getRow(ref.getRow()); 
if (r == null) { 
    // Handle this whole row being empty 
} else { 
    Cell c = r.getCell(ref.getCol(), Row.RETURN_BLANK_AS_NULL); 
    if (c == null) { 
     // Handle this cell being empty 
    } else { 
     // Do something with the cell 
    } 
} 

getirme Bir POI-tarzı haline koordinatları (örneğin B3) bir Excel tarzı setini açmak için CellReference class kullanabilirsiniz eksik satırları veya hücreleri işlemek istiyorsanız, bunu daha kısa yapabilirsiniz, ancak bu sizin gereksinimlerinize özel olacak

İlgili konular