我使用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使用旧的计算值?
答案 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();
}
}
}