I don’t think there’s anything pre-built to handle this, but you should be able to pre-process the data to mangle the column headers together. As an example with this XLSX file
import XLSX
using DataFrames: DataFrame
function parse_dual(f, sheet=1)
xf = XLSX.readxlsx(f)
data = xf[sheet][:] # copy to matrix
header = Symbol[]
last_seen_row1 = nothing
for (row1, row2) in zip(data[1, :], data[2, :])
if !ismissing(row1)
last_seen_row1 = row1
end
push!(header, Symbol(last_seen_row1, ".", row2))
end
columns = AbstractArray[]
for col in eachcol(data[3:end, :])
push!(columns, [x for x in col]) # comprehension reinfers type
end
return DataFrame(columns, header)
end