从Excel工作表生成矩阵[ExcelBundle-Symfony]

时间:2015-03-25 09:39:36

标签: php excel type-conversion

我制作了以下函数,用于从工作表中获取矩阵。

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 个答案:

答案 0 :(得分:1)

如果你只想要列的数值,那么PHPExcel提供了一个静态的帮助方法来做到这一点

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

A为1,列B为2,列AA为27,列AB为28,等等

但是,您可能会发现可以完全简化您的功能,因为PHPExcel还提供toArray()方法来完成您为此方法编写的内容:

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

请注意toArray()返回的矩阵的行/列偏移量是从0开始的