Я сделал следующую функцию для получения матрицы из листа.
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
Если вы просто хотите получить числовое значение для столбца, то PHPExcel предоставляет статический вспомогательный метод, чтобы сделать именно это
$columnIndex = PHPExcel_Cell::columnIndexFromString($cell->getColumn());
Который возвращает 1 для столбца A
, 2 для столбца B
27 для колонки AA
28 для колонки AB
, так далее
Однако вы можете обнаружить, что можете полностью упростить свою функцию, потому что PHPExcel также предоставляет toArray()
метод, чтобы сделать именно то, что вы написали этот метод для:
private function getMatrixFromSheet($worksheet){
return $worksheet->toArray();
}
Обратите внимание, что смещения строк / столбцов для матрицы, возвращаемой toArray()
основаны на 0
Других решений пока нет …