0

Excelファイルを読み取るためのコードを少し書いています。この時点で、私はセルのタイプを判別しようとしています。

    val wb:HSSFWorkbook= new HSSFWorkbook(fileInput)
    val sheet:HSSFSheet = wb.getSheetAt(0);
    val rows    = sheet.rowIterator()

    while(rows.hasNext()){
     var    row = rows.next()
    val cells = row.cellIterator()
    while(cells.hasNext()){
   val cell = cells.next()
   println(cell.getCellType()== org.apache.poi.hssf.usermodel.HSSFCell.CELL_TYPE_NUMERIC)}}     

それは言う

   value CELL_TYPE_NUMERIC is not a member of object org.apache.poi.hssf.usermodel.HSSFCell 

このフィールドにアクセスできない理由がわかりません。それを手伝っていただけませんか。

よろしく

4

1 に答える 1

3

Scalaは静的フィールドを少し異なって扱います。Scalaには静的フィールドがないため、scalaはobjectJavaクラスの静的フィールドの仮想を構築します。CELL_TYPE_NUMERICで定義されてorg.apache.poi.hssf.usermodel.HSSFCellいないのでorg.apache.poi.ss.usermodel.Cell、静的メンバーでは継承が考慮されていないため、そこからアクセスすることはできません。フィールドに直接アクセスできます。

scala> org.apache.poi.ss.usermodel.Cell.CELL_TYPE_NUMERIC
res1: Int = 0

継承を考慮に入れると、これはscalaobjectの動作との不整合につながります。Scalaでは、コンパニオンオブジェクトはクラススーパークラスのコンパニオンから何も継承しません。

于 2012-09-18T10:53:48.500 に答える