(код на Kotlin)
У вас есть 2 варианта указать адрес ячейки:
Вариант 1: по CellReference
(который может содержать ссылку на имя листа):
val cellReference = CellReference("SheetName!C11")
val sheet = workbook.getSheet(cellReference.sheetName)
val row = sheet.getRow(cellReference.row)
val cell: Cell = row.getCell(cellReference.col.toInt())
Вариант 2: CellAddress
(который может содержать только ссылку на ячейку на листе):
val sheetName = "SheetName"
val cellAddress = CellAddress("C11")
val sheet = workbook.getSheet(sheetName)
val row = sheet.getRow(cellAddress.row)
val cell: Cell = row.getCell(cellAddress.column)
К сожалению, код не может быть проще, поскольку и Workbook
, и *У 1014 * нет методов, которые возвращают ячейку с помощью CellReference
или CellAddress
.
Примечание: перегрузка getCell()
с параметром MissingCellPolicy
позволяет писать код более безопасным способом:
val cell: Cell? = row.getCell(cellAddress.column, Row.MissingCellPolicy.RETURN_BLANK_AS_NULL)
return cell ?: throw UnexpectedExcelStructureException("Unable to find $cellAddress cell on the $sheetName sheet or cell is empty")