PHPExcel:使用rangetoArray()函数读取单元格值并应用sum公式

时间:2013-05-27 09:53:30

标签: phpexcel

我正在尝试使用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函数/方法相加。

由于

1 个答案:

答案 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());