2

POI を含む Java アプリケーションで Excel (xls) ファイルを開いています。この Excel ファイルには 30 行あります。ColumnIndex 9 の値を取得する必要があります。

私のコード:

Workbook wb;
wb = WorkbookFactory.create(inp);
Sheet sheet = wb.getSheetAt(0);
for (Row row : sheet) {
    if (row.getLastCellNum() >= 6) {
        for (Cell cell : row) {
             if(cell.getColumnIndex == 9) {
                 //do something
              }
         }
     }
}

Excel のすべての行には、列 1 ~ 14 の値があります。私の問題は、一部の値のみが認識されることです。ColumnIndex 9 (Excel シートの 10 列目) のすべてのセルに同じ値を書きましたが、問題は同じです。

この問題の原因は何ですか?

4

3 に答える 3

0

POI は列に 0 ベースのカウントを使用します。したがって、9 番目の列が必要な場合は、9 ではなくインデックス 8 のセルをフェッチする必要があります。インデックス 9 の列をチェックしているように見えるので、1 列外になります。

0 ベースのインデックス付けについてよくわからない場合は、このCellReferenceクラスを使用するのが最も安全です。これは、Excel スタイルの参照 (A1 など) と POI スタイルの 0 ベースのオフセット (0,0 など) の間で変換されます。次のようなものを使用します。

CellReference ref = new CellReference("I10");
Row r = sheet.getRow(ref.getRow());
if (r == null) {
    // That row is empty
} else {
    Cell c = r.getCell(ref.getCol());
    // c is now the cell at I10
}
于 2012-10-15T13:16:18.173 に答える
0

列のすべてのセルに同じ日付形式を設定していることを確認してください(列を選択し、形式を明示的に設定します)そして、DataUtil クラスを使用してデータを取得する方が call cell.getDateCellValue().

于 2012-10-15T10:53:51.647 に答える