PHPExcel错误地抛出#DIV / 0

时间:2014-07-18 14:05:55

标签: tabs phpexcel

我有一张带有多个标签的Excel工作表。第一个选项卡是在其他选项卡中找到的信息摘要。我需要阅读该标签。

首先,我在计算方面遇到了很多问题,但显然新版本中存在错误,现在我按建议here使用getOldCalculatedValues()

现在情况好多了,但我仍有两个值无法通过,而是抛出一个#DIV/0!

这是我的代码:http://codepad.org/JWNhwyG5

摘要标签(红线就是那些):

  1. 总人员费用百分比为' =Expenditure!C36'
  2. 其中固定/结构成本的百分比为' =Expenditure!D36'
  3. 摘要标签:

    enter image description here

    这是标签'支出'。

    enter image description here

    这是C117:

    enter image description here

1 个答案:

答案 0 :(得分:0)

问题可能是您的代码显示您正在应用读取过滤器,因此只有单元A3:D60被加载到PHPExcel中。引用该范围之外的单元格的任何公式(例如C117)将无法检索要在计算中使用的该单元格的值,因此它将被视为空单元格。

C36 = C35 / C117
=> 15770000 / NULL
=> #DIV/0

我建议您不要应用读取过滤器,但要将整个电子表格加载到PHPExcel中,或至少扩展读取过滤器的范围,以便它确实包含所有相关单元格和所有相关内容工作表,以便您可以在计算中使用单元格C117。

您无需使用getOldCalculatedValue(),也可以

$arrFatalError = array();

$objReader = PHPExcel_IOFactory::createReader("Excel2007");

$objReader->setReadDataOnly(true);
$objPHPExcel = $objReader->load("/excel/myfile.xlsx");

$sheetData = $objPHPExcel->getSheetByName("summary")
    ->rangeToArray('A3:D60', null,true,true,true);