现在我正在读取一个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
结果(就像excel一样)。我尝试了下面的代码但是我得到了以下错误:
Warning: Illegal string offset 'value' in...
echo $objWorksheet->getCellByColumnAndRow($col, $row)->getCalculatedValue();
我也尝试过这样的事情:
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 ...
那么我如何得到公式的结果并将其格式化为货币?
答案 0 :(得分:1)
关于单元格格式:
如果您使用
,则单元格不会有任何格式$objReader->setReadDataOnly(true);
因为您特意告诉PHPExcel 加载单元格格式。如果要读取格式
,请不要将readDataOnly设置为true关于问题的其他部分,如果您在致电
时遇到错误echo $objWorksheet->getCellByColumnAndRow($col, $row)->getCalculatedValue();
然后说出公式是什么
可能是有用的echo $objWorksheet->getCellByColumnAndRow($col, $row)->getValue();
应该告诉你这个公式,所以也许您可以考虑将其添加到您的问题中,因为知道您是否需要帮助非常有用