我正在使用PHPExcel读取Excel值。
我用过
$values = $objPHPExcel->getActiveSheet()->rangeToArray('A2:G7');
从A2到G7读取值。正确读取值,但问题出在G列中。它具有通过公式计算出的值。因此,每当我从G列中读取值时,我都无法获得单元格中的实际值。我得到其他一些价值(可能是我的代码考虑公式并在内部执行)。
在寻找解决方案时,我注意到使用getCalculatedvalue()
可以得到实际值。
如何避免公式并从单元格中获取实际值?
使用getCalculatedValue()
方法后如何使用rangeToArray()
?
根据API文档,即此方法的第3个参数为布尔值,TRUE-计算值,FALSE-公式。我得到的结果正确,但是我的问题是,当公式使用空单元格的值时,我没有得到正确的结果。
例如:假设excel具有3列,即A B C。
我的公式是C2 = C1 + B2,C3 = C2 + B3。这里C1 =空单元格。
A B C
EMPTY EMPTY EMPTY
2 3 3 (C1 + B2)
4 5 8 (C2 + B3)
在这种情况下,我得到C2 = 0和C3 = 5。
计算公式有什么问题?
传递给rangeToArray()的第三个参数是一个布尔值,指示该方法是应计算公式并返回结果,还是返回公式本身:默认值为true;否则为false。但是如果将该参数设置为false,则不会执行任何计算。
这在API文档中有记录:
/**
* Create array from a range of cells
*
* @param string $pRange Range of cells (i.e. "A1:B10"), or just one
* cell (i.e. "A1")
* @param mixed $nullValue Value returned in the array entry if a cell
* doesn't exist
* @param boolean $calculateFormulas Should formulas be calculated?
* @param boolean $formatData Should formatting be applied to cell values?
* @param boolean $returnCellRef False - Return a simple array of rows and
* columns indexed by number counting
* from zero
* True - Return rows and columns indexed by
* their actual row and column IDs
* @return array
*/