PHPExcel excel读取不适用于某些计算单元格

时间:2014-06-09 06:43:22

标签: php phpexcel

我使用PHPExcel lib来读取Codeigniter项目中的excel文件。它不会通过计算读取一些单元格。它显示为#VALUE!但是计算的某些值是在同一个Excel工作表中读取的。那些细胞怎么了?

具有以下计算的单元格未读取

=+D109*1000     
=+B16/B13
=+D23/$D$109 

具有以下计算的单元格正在读取

=+B10-B11
=+C10-C11

但是所有细胞都在阅读一些excel表。此问题附带xlsx格式

这是我的代码

$objReader = PHPExcel_IOFactory::createReader('Excel2007');
$objReader->setReadDataOnly(true);
$this->excel = $objReader->load($path);
$this->excel->setActiveSheetIndex($sheet);
$data = $this->excel->getActiveSheet()->toArray(null, true, true, true);

print_r($data);

我查看谷歌。 getCalculatedValue()应该用于读取计算值。但我不能一个接一个地使用它。它有一个方法来读取所有工作表作为数组?

我怎么用以下方式检查了一些细胞

$this->excel->getActiveSheet()->getCell('B18')->getCalculatedValue() // return #VALUE!
$this->excel->getActiveSheet()->getCell('B18')->getOldCalculatedValue() //return 0.4211

我如何使用toArray使用旧的计算值?

1 个答案:

答案 0 :(得分:4)

最后,我使用循环来获取旧的getOldCalculatedValue。

$data = $this->excel->getActiveSheet()->toArray(null, true, true, true);

//This code add for some calculated cells were not reading in xlsx format
foreach ($data as $no => $row) {
    foreach ($row as $key => $value) {
        if (isset($value) && $value == '#VALUE!') {
            $data[$no][$key] = $this->excel->getActiveSheet()->getCell($key.$no)->getOldCalculatedValue();
        }
    }
}