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中没有静态字段,所以scalaobject为java类中的静态字段构建了virtual。由于CELL_TYPE_NUMERICis not defined on org.apache.poi.hssf.usermodel.HSSFCellbut on 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 回答