PHPExcel计算公式单元格和格式货币

PHPExcel计算公式单元格和格式货币,php,phpexcel,Php,Phpexcel,现在我正在读取excel文件并将其显示在html表格上。 像这样: <?php function load_table(){ require_once('Classes/PHPExcel.php'); $objReader = PHPExcel_IOFactory::createReader('Excel2007'); $objReader->setReadDataOnly(true); $objPHPExcel = $objReader-&g

现在我正在读取excel文件并将其显示在html表格上。
像这样:

 <?php 
 function load_table(){
    require_once('Classes/PHPExcel.php');
    $objReader = PHPExcel_IOFactory::createReader('Excel2007');
    $objReader->setReadDataOnly(true);

    $objPHPExcel = $objReader->load("SampleData.xlsx");
    $objWorksheet = $objPHPExcel->getActiveSheet();
    $highestRow = $objWorksheet->getHighestRow(); // e.g. 10
    $highestColumn = $objWorksheet->getHighestColumn(); // e.g 'F'

    $highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn); // e.g. 5

    echo '<table>' . "\n";
    for ($row = 1; $row <= $highestRow; ++$row) {
      echo '<tr>' . "\n";

      for ($col = 0; $col <= $highestColumnIndex; ++$col) {
        echo '<td>';
        echo  $objWorksheet->getCellByColumnAndRow($col, $row)->getValue();     
        echo '</td>' . "\n";

      }

      echo '</tr>' . "\n";
    }
    echo '</table>' . "\n";
}
  ?> 
我也试过这样的方法:

echo  $objWorksheet->getCellByColumnAndRow($col, $row)->getOldCalculatedValue();  
这一个有效,但我不想使用
GetOldCalculatedValue
,因为:

getOldCalculatedValues()读取MS Excel上次计算的值(如果可用),但不能保证该值始终存在,如果存在,则不能保证该值正确(可以在MS Excel中禁用自动计算,或者在加载CSV文件时不会设置该值);而getCalculatedValue()实际上在PHPExcel本身中重新计算该值

此外,我还使用了
echo
来打印公式字符串,它看起来很好:

echo $objWorksheet->getCellByColumnAndRow($col, $row)->getValue();  
Fórmula打印:
=F2*E2
=F3*E3
=F4*E4
=F14*E14…

echo  $objWorksheet->getCellByColumnAndRow($col, $row)->getCalculatedValue();  

那么,如何获得公式的结果并将其格式化为货币?

关于单元格格式:

如果使用,单元格将没有任何格式

$objReader->setReadDataOnly(true);
因为您特别告诉PHPExcel不要使用称重传感器格式。如果要读取格式,请不要将readDataOnly设置为true

至于你问题的另一部分,如果你打电话时出错

echo  $objWorksheet->getCellByColumnAndRow($col, $row)->getCalculatedValue();
那么,说明公式是什么可能是有用的

echo  $objWorksheet->getCellByColumnAndRow($col, $row)->getValue();

应该告诉你这个公式,所以也许你可以考虑把它添加到你的问题中,因为知道你是否需要帮助很有用。当我回显$objWorksheet->getCellByColumnRow($col,$row)->getValue();`它完美地打印了公式。但是我想找到一种打印结果的方法。已设置'ReadDataOnly(false);`但错误还在继续。请帮助“-”如果调用

getCalculatedValue()时出错,则公式可能有问题,因此了解该公式的示例可能很有用:
=F2*E2,=F3*E3,=F9*E9…
。当我打开excel文件时,结果很好。这些公式应该不会引起任何问题:您运行的是什么版本的PHPExcel?1.7.6非常旧,不应该再使用了:1.8.1是最新的带标签的生产版本。。。不要使用1.9分支,自述文件中的大警告应该告诉您,目前它是一个高度不稳定的分支