Я пытаюсь прочитать файл Excel, используя crealytics, и мне нужно сложить столбец чисел. Мой последний объект - каждый раз проверять, является ли «Итог», отображаемый в нижней части файла, суммой соответствующих ячеек.

С помощью crealytics я, конечно, могу прочитать свой файл и разобраться с ним, и это очень просто (я написал функцию, чтобы получить последнюю строку в файле, чтобы не перепутать данные и последнюю строку):
val df = spark.read
.format("com.crealytics.spark.excel")
.option("dataAddress", sheetName + "!B10:L" + excelEndAdress)
//.option("header", "true")
.option("useHeader", "true")
.option("treatEmptyValuesAsNulls", "false")
.option("inferSchema", "true")
.option("addColorColumns", "true")
.option("timestampFormat", "MM-dd-yyyy HH:mm:ss")
.option("treatEmptyValuesAsNulls", "true")
.schema(schema)
.load(path)
Я могу кодировать функцию для работы с кадром данных, полученным из файла Excel, но это может привести к большему потреблению памяти и я предпочитаю иметь дело с файлом Excel. Я также пытался с библиотекой POI (я не могу найти документацию по библиотеке POI в scala ..). Это код:
def getRowContents(sheet: XSSFSheet, rowId: Int, columnNum: Int): List[String] = {
(0 until columnNum).map(colId => Option(sheet.getRow(rowId).getCell(colId)).getOrElse("").toString).toList
}
val workbook = new XSSFWorkbook(new FileInputStream(path))
val sheet = workbook.getSheetAt(0)
//val columnNum = sheet.getRow(0).getPhysicalNumberOfCells
//(0 to sheet.getLastRowNum).map(i => getRowContents(sheet, i, columnNum)).toList
println(sheet)
И я получил это сообщение Ошибка:
org.apache.poi.openxml4j.exceptions.OLE2NotOfficeXmlFileException: The supplied data appears to be in the OLE2 Format. You are calling the part of POI that deals with OOXML (Office Open XML) Documents. You need to call a different part of POI to process this data (eg HSSF instead of XSSF)
Есть ли способ сделать это по-другому? Как я могу использовать библиотеку POI для суммирования значений в SCALA, НЕ В JAVA ПОЖАЛУЙСТА? Спасибо!