Excel Header Row

dakata__92

Super Moderator
Здравейте. Открили ли сте начин автоматично да засичате дали даден ред с клетки от файл е заглавен или не?
Сетих се за това дървено и неефикасно решение на проблема:
Код:
public static function isHeaderRow(array $row): bool
    {
        $fullRowCounter = count($row);
        foreach ($row as $key => $cell) {
            if (!preg_match('/\D+/iu', $cell)) {
                unset($row[$key]);
            }
        }
        return $fullRowCounter == count($row);
    }
Можеше да го разпиша и с preg_grep но реално с foreach мога да си добавям и махам условия.
 
Достатъчно е да върнеш false при първото попадение, но сигурен ли си, че в хедърите никога няма да има число? :)

Може да гледаш съседните редове и да сравняваш структурата на техните клетки (само текст, само числа, микс).
 
djman каза:
Достатъчно е да върнеш false при първото попадение, но сигурен ли си, че в хедърите никога няма да има число? :)

Може да гледаш съседните редове и да сравняваш структурата на техните клетки (само текст, само числа, микс).

Лошото е, че нямам достъп до следващият или предходният ред. Имам едни шаблонни структури, но са доста гъвкави и за това не позволявам число. Реално ще видя да добавя още няколко условия, с които да избегна шаблонните редове. Проблема не е в избягването на един ред а примерно, че в даден документ може да има доста sheet-ове и съответно няколко заглавни реда в масива от данни.
 

Горе