Как получить индекс первого столбца в PhpSpreadsheet - PullRequest
0 голосов
/ 14 мая 2019

Мне нужно перебрать все строки первых двух столбцов документа xls.Проблема в том, что первый столбец этого конкретного документа - «G» с индексом 7.

Есть ли способ получить индекс первого столбца, потому что я не хочу его жестко кодировать.

Мой цикл:

$spreadsheet =\PhpOffice\PhpSpreadsheet\IOFactory::load($path);
$worksheet = $spreadsheet->getActiveSheet();

$highestRow = $worksheet->getHighestRow();

$rows = [];
for ($row = 1; $row <= $highestRow; ++$row) {
    // I WANT TO REPLACE HARD-CODED VALUES OF 7 AND 8
    // WITH $firstCol and $firstCol+1
    for ($col = 7; $col <= 8; ++$col) { 
        $value = $worksheet->getCellByColumnAndRow($col, $row)->getValue();
        $rows[$row][$col] = $value;
    }
}

1 Ответ

1 голос
/ 15 мая 2019

Вы можете добавить цикл while , чтобы пропустить пустые ячейки.Попробуйте это:

$rows = [];
for ($row = 1; $row <= $highestRow; ++$row) {
    $col = 1;
    $cell = $worksheet->getCellByColumnAndRow($col, $row);
    // Skip empty cells
    while (in_array($cell->getValue(), [null, ''], true)) {
        $col++;
        $cell = $worksheet->getCellByColumnAndRow($col, $row);
    }
    $maxCol = $col + 1;
    for ( ; $col <= $maxCol; ++$col) { 
        $value = $worksheet->getCellByColumnAndRow($col, $row)->getValue();
        $rows[$row][$col] = $value;
    }
}
...