2

我正在尝试使用 rangetoArray() 函数读取单元格公式,然后返回数组值,当此函数读取范围值时,我想将其与 phpexcel 库求和。

include 'PHPExcel/Classes/PHPExcel.php';
include 'PHPExcel/Classes/PHPExcel/IOFactory.php'

$objPHPExcel = PHPExcel_IOFactory::load($uploadedFile);

$cellValues = $objPHPExcel->getActiveSheet()->rangeToArray('A1:A2');

//基本上我正在为每个循环中的总和值执行此操作..但它是自定义创建的。我想要 SUM 和其他数学运算的 PHPExcel 库函数。

foreach ($cellValues as $cell) {
    foreach ($cell as $finalValue) {
        $sumVal += $finalValue;
    }
}

//我想通过rangetoArray('A1:A5'); 像这样并使用一些 PHPExcel 库函数/方法自动对其进行求和。

谢谢

4

1 回答 1

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());
于 2013-05-27T14:43:23.097 回答