2017-09-05 95 views
0

空でないセル数を取得しようとしています。Apache POI。 row.getLastCellNum()を使用して空白でないセルの数を取得する

| 1 | 2 | 3 | | | | 
| 55 | 33 | | | | | 
(int) row.getLastCellNum();

しかし、両方の行のために私は実際に私のシートに値を持つセルの数よりも大きい整数を取得しています。これの理由は何でしょうか?セルの書式設定やスタイリングは何らかの責任を負うことができますか?

私は、Excelシートから値を削除すると(手動ではなくコードから)、空ではない(null?)とみなして合計カウントに含めます。

UPD:もう少し研究を重ねた結果、セルに値を追加して削除すると、POIはまだ空ではないと判断しています。行/列全体を削除せずにExcelシートのセル内容を正しくクリアする方法はありますか?

+1

[行とセルを反復処理する際のApache POIドキュメントを読む](http://poi.apache.org/spreadsheet/quick-guide.html#Iterator)、特に空白のセルとヌルセルのビットはありますか? – Gagravarr

+0

はい、あります。空白とヌルセルについての説明は非常に曖昧ですが(少なくとも私にとってはそうです)、疑問が生じました。 – SergioLeone

+0

これは、Excelファイル形式の仕組みを反映しています。ヌルセルは決して使用されていません。空白のセルは、スタイリング、書式設定、枠線などを持っているかもしれませんが、Excelはあまりにも後でそれらを削除するにはあまりにも怠惰だったかもしれません... – Gagravarr

答えて

0

は、今のところ私はこのようにそれを解決してきました:誰もが任意のより良い解決策を持っている場合

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

がいいだろう。

関連する問題