我正在尝试使用rangetoArray()函数读取单元格公式,然后有数组值返回我希望在此函数读取范围值时将其与phpexcel库相加。
include 'PHPExcel/Classes/PHPExcel.php';
include 'PHPExcel/Classes/PHPExcel/IOFactory.php'
$objPHPExcel = PHPExcel_IOFactory::load($uploadedFile);
$cellValues = $objPHPExcel->getActiveSheet()->rangeToArray('A1:A2');
//基本上我是为每个循环中的和值做这个..但它是自定义创建的。我想要PHP和其他Mathmatic操作的PHPExcel库函数。
foreach ($cellValues as $cell) {
foreach ($cell as $finalValue) {
$sumVal += $finalValue;
}
}
//我想通过rangetoArray('A1:A5')读取值;像这样自动将它与一些PHPExcel Library函数/方法相加。
由于
答案 0 :(得分:2)
选项#1
创建一个公式,分配给一个虚拟单元格(在这种情况下为A1,虽然它不会以任何方式更改单元格A1的值),并使用计算引擎执行该公式:
$sumFormula = '=SUM(A1:B2)';
$rangeSum = PHPExcel_Calculation::getInstance()->calculateFormula(
$sumFormula,
'A1',
$objPHPExcel->getActiveSheet()->getCell('A1')
);
var_dump($rangeSum);
选项#2
直接从您自己的代码调用SUM()函数,将toArray()方法的结果传递给函数:
$rangeSum = PHPExcel_Calculation_MathTrig::SUM(
$objPHPExcel->getActiveSheet()->rangeToArray('A1:B2')
);
var_dump($rangeSum);
选项#3
使用doSum()方法创建自己的类,该类将使用fromArray()调用的结果:
class mySummer{
protected $_cellArray;
public function __construct(array $cells = array()) {
$this->_cellArray = PHPExcel_Calculation_Functions::flattenArray($cells);
}
public function doSum(){
return array_sum($this->_cellArray);
}
}
$summer = new mySummer(
$objPHPExcel->getActiveSheet()->rangeToArray('A1:B2')
);
var_dump($summer->doSum());