9
Environment    Status    Version    PatchNumber
Windows        Live      1.0        2
Unix           Live      2.0        4
Mac            Live      1.3        8

上記のデータが Excel にある場合、テキストを使用して PatchNumber の cellNumber にアクセスするにはどうすればよいですか

XSSFRow row = (XSSFRow) rows.next();
アクセスしたいrow.getCellNumber("PatchNumber");//このメソッドは Apache POI には存在しないことに注意してください。

4

3 に答える 3

11

私はあなたが何を求めているのか理解していると思います-どの列の最初の行に「パッチ」という単語が含まれているのか知りたいですか?もしそうなら、あなたがする必要があるのは次のようなものだけです:

Sheet s = wb.getSheetAt(0);
Row r = s.getRow(0);

int patchColumn = -1;
for (int cn=0; cn<r.getLastCellNum(); cn++) {
   Cell c = r.getCell(cn);
   if (c == null || c.getCellType() == Cell.CELL_TYPE_BLANK) {
       // Can't be this cell - it's empty
       continue;
   }
   if (c.getCellType() == Cell.CELL_TYPE_STRING) {
      String text = c.getStringCellValue();
      if ("Patch".equals(text)) {
         patchColumn = cn;
         break;
      }
   }
}
if (patchColumn == -1) {
   throw new Exception("None of the cells in the first row were Patch");
}

最初の(ヘッダー)行のセルをループして値を確認し、テキストを見つけたら現在の列をメモします。

于 2012-09-26T21:15:56.897 に答える
3

これはあなたが望むものではありませんか?

row.getCell(3) 

public XSSFCell getCell(int cellnum) 親 Workbook の Row.MissingCellPolicy を使用して、指定された (0 ベースの) インデックスのセルを返します。

「PatchNumber」という名前で正確にアクセスしたい場合は、ヘッダー行を読み取り、PatchNumber のインデックスを保存できます。テーブルモデルはセルへのアクセスのみを定義していると思いますが、列名による関連付けアクセスは提供していません。モデルではすべての行が等しいと思います:-)

列のインデックスを取得します。ヘッダー行を繰り返し処理し、列名のリストを作成してからcolumns使用できますcolumns.indexOf("PatchNumber")

http://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFRow.html#getCell(int )

于 2012-09-26T19:13:31.320 に答える