我正在编写一些代码来读取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
我不明白为什么我无法访问此字段。你能帮忙吗?
问候
答案 0 :(得分:3)
Scala将静态字段视为有点不同。在scala中没有静态字段,因此scala为java类中的静态字段构建虚拟object
。由于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
,因为静态成员不会考虑继承。您可以直接访问该字段:
object
如果考虑了继承,这将导致scala {{1}}的工作方式不一致。在scala中,伴随对象不会从类超类的伴随继承任何内容。