2017-09-05 158 views
0

我試圖在一行中獲得非空白數量的單元格。Apache POI。使用row.getLastCellNum()檢索非空白單元格的數量

| 1 | 2 | 3 | | | | 
| 55 | 33 | | | | | 

(int) row.getLastCellNum();

但對於兩行我得到一個int比實際上在我的表值細胞的數量更大。這可能是什麼原因?單元格格式化和/或樣式可以以某種方式負責?我還注意到,如果我從Excel表中刪除值(手動,而不是從代碼),poi仍然認爲它們是非空白(null?)並將它們包括在總數中。

UPD:經過多一點研究後,我發現如果我給單元格添加值然後刪除它,那麼POI仍然認爲它是非空的。有什麼辦法可以正確清除excel表格中的單元格內容而不刪除整行/列?

+1

您是否[在閱讀Apache POI文檔時重複遍歷行和單元格](http://poi.apache.org/spreadsheet/quick-guide.html#Iterator),特別是空白vs null單元格上的位? – Gagravarr

+0

是的,我有。雖然關於空白與空單元格的解釋在這裏非常模糊(至少對我來說是這樣),因此出現了這個問題。 – SergioLeone

+0

它只是反映了Excel文件格式的工作方式!空單元格從未使用或設計過。空白單元格可能具有樣式,格式,邊界等,或者可能已經習慣了,Excel稍後懶得刪除它們... – Gagravarr

回答

0

現在我已經解決了它這樣的:

Iterator<Cell> cells = row.cellIterator(); 
       while (cells.hasNext()) { 
        if (formatCellToString(cells.next()).equals("")) { 
         lastCellNumber = lastCellNumber - 1; 
        } 
       } 

將是很好,如果任何人有任何更好的解決方案。