Измените
foreach (range('A', $spreadsheet->getActiveSheet()->getHighestDataColumn()) as $col) {
}
на
$max_column = $spreadsheet->getActiveSheet()->getHighestDataColumn();
for($column = 'A'; !isBiggerExcelColumn($column,$max_column); ++$column){
// rest of your code
}
function isBiggerExcelColumn($current_column,$max_column){
if(strlen($current_column) < strlen($max_column)) return false;
return strlen($current_column) > strlen($max_column) || strcmp($current_column,$max_column) > 0;
}
. Выше мы используем от ++$column
до go для следующего столбца Excel, который PHP предусматривает приращение над струнами. В isBiggerExcelColumn()
мы проводим сравнение строк, используя strcmp
и другие проверки длины, чтобы определить, больше ли текущий столбец, чем максимальный. Если да, остановите l oop, иначе продолжайте;