A solution has been found. Not quite straight, but clean. Instead of connecting via ODBC, you need to connect via ADODB and the settings for the column header work there.
$conn = new \COM("ADODB.Connection");
$file = 'C:\123.xlsx';
$sheet = 'Sheet1';
$conn->Open("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=$file;Extended Properties=\"Excel 12.0;HDR=No;IMEX=1\"");
$query = "
SELECT
*
FROM [{$sheet}$]
";
$rs = $conn->Execute($query);
$num_columns = $rs->Fields->Count();
for ($i=0; $i < $num_columns; $i++) {
$fld[$i] = $rs->Fields($i)->Value();
}
var_dump($fld);