Создать матрицу из листа Excel [ExcelBundle-Symfony]

Я сделал следующую функцию для получения матрицы из листа.

private function getMatrixFromSheet($worksheet){
foreach ($worksheet->getRowIterator() as $row) {
$cellIterator = $row->getCellIterator();
$cellIterator->setIterateOnlyExistingCells(false);
foreach ($cellIterator as $cell) {
if (!is_null($cell)) {
$matrix[$cell->getRow()][$cell->getColumn()] = $cell->getCalculatedValue();
}
}
}
return $matrix;
}

Таким образом, если я хочу получить доступ ко второму ряду, второй ячейке col, я могу сделать $matrix[2]['B'],

Мне нужно иметь возможность доступа к индексам матрицы как в виде числа, чтобы получить доступ к предыдущей ячейке, как $matrix[2][2],

Есть ли способ сделать это?
Я пытаюсь конвертировать $cell->getColumn() результат в целое число, но, к сожалению, (int) "a" == 0

1

Решение

Если вы просто хотите получить числовое значение для столбца, то PHPExcel предоставляет статический вспомогательный метод, чтобы сделать именно это

$columnIndex = PHPExcel_Cell::columnIndexFromString($cell->getColumn());

Который возвращает 1 для столбца A, 2 для столбца B27 для колонки AA28 для колонки AB, так далее

Однако вы можете обнаружить, что можете полностью упростить свою функцию, потому что PHPExcel также предоставляет toArray() метод, чтобы сделать именно то, что вы написали этот метод для:

private function getMatrixFromSheet($worksheet){
return $worksheet->toArray();
}

Обратите внимание, что смещения строк / столбцов для матрицы, возвращаемой toArray() основаны на 0

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]