2016-05-04 25 views
3

私はApache POIライブラリを使用していますが、読みたくないデータがあります。そのため、特定の行からファイルを読み込むプログラムが必要です。Apache POIで特定の行を読み取るにはどうすればよいですか?

文書が空になるまで、行10の後に来るセルと行からのすべてのデータが必要です。私は次のコードを試しました。

Workbook workbook = new XSSFWorkbook(inputStream); 
    Sheet firstSheet = workbook.getSheetAt(0); 

    Iterator<Row> iterator = firstSheet.iterator(); 
    Row getSchool = firstSheet.getRow(10); 

    Iterator<Cell> cellIterator = getSchool.cellIterator(); 

    while (iterator.hasNext()) 
    { 
     while (cellIterator.hasNext()) 
     { 
     ... 
     } 
    } 

しかし、それだけで私があなたから:-)を聞いて楽しみにしてすることがあります行10

内のセルからのすべてのデータを提供します。あなたはここでしか行11からデータを取得している

答えて

4

Row getSchool = firstSheet.getRow(10); 

Sheet.getRow(int rownum)

のためのマニュアルを参照してください論理行(物理的ではない)0ベースを返します。 定義されていない行を要求すると、nullが返されます。これは にあります。行4はシート上の5番目の行を表します。

Iterate over rows and cellsのマニュアルの例を確認してください。

あなたが好きなものを使用することができます。

Workbook workbook = new XSSFWorkbook(inputStream); 
Sheet firstSheet = workbook.getSheetAt(0); 

for (Row row : firstSheet) { 
    for (Cell cell : row) { 
    // Do something here 
    } 
} 

あなたがチェックした行のすべてのセルを反復処理したい場合はどのよう​​へ。

CellIteratorは、ファイルに定義されたセルのみを返します。これは主に値またはスタイルのあるセルですが、Excelに依存します。

あなたはとしてRow.MissingCellPolicyを指定することができます。

int lastColumn = Math.max(row.getLastCellNum(), MY_MINIMUM_COLUMN_COUNT); 

for (int cn = 0; cn < lastColumn; cn++) { 
    Cell c = row.getCell(cn, Row.RETURN_BLANK_AS_NULL); 
    if (c == null) { 
    // The spreadsheet is empty in this cell 
    } else { 
    // Do something useful with the cell's contents 
    } 
} 
+0

、行11、次のようになります。

Row.getCell(int, MissingCellPolicy) 

ここでは一例です。 – djdanlib

+0

ありがとうございます。答えを更新しました。 – Diyarbakir

関連する問題