Если вы изучите исходный код crealytics spark excel , вы обнаружите, что номера столбцов определены в первой строке со значением.И первая строка со значением в вашем файле Excel имеет столбцы файла, поэтому последний столбец, который имеет значение в других столбцах, а не в первой строке со значением, игнорируется.
Решением этой проблемы будет определениеПользовательская схема и передать ее в Framework как
val customSchema = StructType(Seq(
StructField("col0", StringType, true),
StructField("col1", StringType, true),
StructField("col2", StringType, true),
StructField("col3", StringType, true),
StructField("col4", IntegerType, true),
StructField("col5", IntegerType, true)
))
val df = spark.read.format("com.crealytics.spark.excel")
.option("sheetName", "Sheet1") // Required
.option("useHeader", "false") // Required
.option("treatEmptyValuesAsNulls", "false") // Optional, default: true
.option("inferSchema", "true") // Optional, default: false
.option("addColorColumns", "false") // Optional, default: false
.option("startColumn", 0) // Optional, default: 0
.option("endColumn", 99) // Optional, default: Int.MaxValue
.option("timestampFormat", "MM-dd-yyyy HH:mm:ss") // Optional, default: yyyy-mm-dd hh:mm:ss[.fffffffff]
.option("maxRowsInMemory", 20) // Optional, default None. If set, uses a streaming reader which can help with big files
.option("excerptSize", 10) // Optional, default: 10. If set and if schema inferred, number of rows to infer schema from
.option("path", excelFile)
.schema(customSchema)
.load()
, и у вас должно быть следующее dataframe
+----+----+--------------+----+----+----+
|col0|col1|col2 |col3|col4|col5|
+----+----+--------------+----+----+----+
|null|null|Test Profile 1|A |123 |null|
|null|null|Test Profile 2|B |null|null|
|null|null|Test Profile 3|C |null|345 |
|null|null|Test Profile 4|D |null|null|
|null|null|Test Profile 5|E |null|null|
|null|null|Test Profile 6|F |null|null|
+----+----+--------------+----+----+----+
Надеюсь, ответ полезен