繁体   English   中英

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

[英]PHPExcel excel read is not working for some cells with calculation

我使用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使用旧的计算值?

最后,我使用循环获取了旧的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();
        }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM