PHPExcel - 如何在不首先使用 setCellValue() 插入公式的情况下根据 excel sheet 中的数据计算值?
PHPExcel - How to calculate a value based on the data from an excel sheet without using setCellValue() to insert a formula in the first place?
我做了很多研究,但找不到真正的答案。
我使用 PHPExcel 从 excel sheet 中读取原始数据。它工作正常。现在我需要从单元格 A1
到 A500
得到一个 SUM,即 SUM(A1:A500)
。为此,我了解我需要:
- 第 1 步。将此公式插入单元格使用
$sheet1->setCellValue(B1, "=SUM(A1:A500)")
.
- 第 2 步。使用
$sum = $sheet1->getCell('B1')->getCalculatedValue()
获取计算值。
我的问题是,有没有什么方法可以在不需要首先将公式插入单元格的情况下获得 $sum?换句话说,在没有步骤1的情况下实现步骤2的结果。因为我不想add/change/edit任何东西到原来的excel sheet上。非常感谢。
我刚刚 运行 对此进行了一些测试。
虽然您不需要读取包含公式的单元格...您可以使用计算引擎本身执行公式...但您仍然需要传递单元格引用(可以是任何单元格在工作表中;我在这里使用了 A1,因为 A1 应该始终存在)到计算引擎:
(假设 $objPHPExcel
是您从文件加载的 PHPExcel 对象)
$formula = '=SUM(A1:A500)';
$sum = PHPExcel_Calculation::getInstance(
$objPHPExcel
)->calculateFormula($formula, 'A1', $objPHPExcel->getActiveSheet()->getCell('A1'));
或直接使用您的$sheet1
$formula = '=SUM(A1:A500)';
$sum = PHPExcel_Calculation::getInstance(
$sheet1->getParent()
)->calculateFormula($formula, 'A1', $sheet1->getCell('A1'));
我做了很多研究,但找不到真正的答案。
我使用 PHPExcel 从 excel sheet 中读取原始数据。它工作正常。现在我需要从单元格 A1
到 A500
得到一个 SUM,即 SUM(A1:A500)
。为此,我了解我需要:
- 第 1 步。将此公式插入单元格使用
$sheet1->setCellValue(B1, "=SUM(A1:A500)")
. - 第 2 步。使用
$sum = $sheet1->getCell('B1')->getCalculatedValue()
获取计算值。
我的问题是,有没有什么方法可以在不需要首先将公式插入单元格的情况下获得 $sum?换句话说,在没有步骤1的情况下实现步骤2的结果。因为我不想add/change/edit任何东西到原来的excel sheet上。非常感谢。
我刚刚 运行 对此进行了一些测试。
虽然您不需要读取包含公式的单元格...您可以使用计算引擎本身执行公式...但您仍然需要传递单元格引用(可以是任何单元格在工作表中;我在这里使用了 A1,因为 A1 应该始终存在)到计算引擎:
(假设 $objPHPExcel
是您从文件加载的 PHPExcel 对象)
$formula = '=SUM(A1:A500)';
$sum = PHPExcel_Calculation::getInstance(
$objPHPExcel
)->calculateFormula($formula, 'A1', $objPHPExcel->getActiveSheet()->getCell('A1'));
或直接使用您的$sheet1
$formula = '=SUM(A1:A500)';
$sum = PHPExcel_Calculation::getInstance(
$sheet1->getParent()
)->calculateFormula($formula, 'A1', $sheet1->getCell('A1'));