getCellValueByColumnAndRow->getCalculatedValue() 不工作 PHPExcel?
getCellValueByColumnAndRow->getCalculatedValue() not working PHPExcel?
我想弄清楚为什么将 setCellValueByColumnAndRow
与 PHPExcel 一起使用时结果不受影响。
我是不是做错了什么?
第一个版本将结果设置为整数 0(尝试使用两种不同的方法来获取计算值)
//Version 1 - generating incorrect result (should 77*5 = 385, but is 0)
$objPHPExcel = new PHPExcel();
$objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow( 0, 1, '=A2*5' ); //A1
$objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow( 1, 1, 77 ); //A2
echo '<br /> Value A1= ' . $objPHPExcel->getActiveSheet()-
>getCellByColumnAndRow(0,1)->getValue();
echo '<br />Value A2= ' . $objPHPExcel->getActiveSheet()-
>getCellByColumnAndRow(1,1)->getValue();
echo '<br />Result=' . $objPHPExcel->getActiveSheet()-
>getCellByColumnAndRow(0,1)->getCalculatedValue();
echo '<br />Result=' . $objPHPExcel->getActiveSheet()->getCell("A1")-
>getCalculatedValue();
echo '<br /><br />';
第二个版本在使用字母和字符设置值时按预期工作:
//Version 2 - generating correct result (77*5 = 385)
$objPHPExcel = new PHPExcel();
$objPHPExcel->getActiveSheet()->setCellValue( "A1", '=A2*5' ); //A1
$objPHPExcel->getActiveSheet()->setCellValue( "A2", 77 ); //A2
echo '<br />Value A1= ' . $objPHPExcel->getActiveSheet()->getCell("A1")-
>getValue();
echo '<br />Value A2= ' . $objPHPExcel->getActiveSheet()->getCell("A2")-
>getValue();
echo '<br />Result=' . $objPHPExcel->getActiveSheet()->getCell("A1")-
>getCalculatedValue();
echo '<br />Result=' . $objPHPExcel->getActiveSheet()-
>getCellByColumnAndRow(0,1)->getCalculatedValue();
输出版本 1:
Value A1= =A2*5
Value A2= 77
Result=0
Result=0
输出版本 2:
Value A1= =A2*5
Value A2= 77
Result=385
Result=385
这是 PHPEXcel 中的错误还是我只是做错了什么?
我想使用 setCellValueByColumnAndRow
的原因是我有一个这样的数组,它是根据 post 请求创建的,我想重新计算数组的更改值:(示例上面的version1和version2用于测试它如何与PHPExcel一起工作,与这个数组无关)
array
0 =>
array (size=2)
1 => string '6000' (length=4)
2 => string '=A2*5' (length=5)
1 =>
array (size=2)
1 => string '60009' (length=5)
2 => string '=A2*5' (length=5)
2 =>
array (size=2)
1 => string '7000' (length=4)
2 => string '=A3*5' (length=5)
....
更新:
这不是重复的 PHPExcel setCellValueByColumnAndRow not writing data to spreadsheet,因为该问题与公式计算结果无关。实际值在我的问题中设置到单元格中,但是当使用 getCellValueByColumnAndRow
获取计算值时,它似乎不起作用。我看不到我的问题与标记为可能重复的问题之间的联系。我还更改了这个问题的标题,以更清楚地说明实际问题是什么。
奇怪的是...
有时这很容易...太容易了...出于某种原因我只是混淆了行和列 ):
现在可以使用此代码(如预期):
$objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow( 0, 1, '=A2*5' ); //A1
$objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow( 0, 2, 77 ); //A2
而不是
$objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow( 0, 1, '=A2*5' ); //A1
$objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow( 1, 1, 77 ); //A2
我想弄清楚为什么将 setCellValueByColumnAndRow
与 PHPExcel 一起使用时结果不受影响。
我是不是做错了什么?
第一个版本将结果设置为整数 0(尝试使用两种不同的方法来获取计算值)
//Version 1 - generating incorrect result (should 77*5 = 385, but is 0)
$objPHPExcel = new PHPExcel();
$objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow( 0, 1, '=A2*5' ); //A1
$objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow( 1, 1, 77 ); //A2
echo '<br /> Value A1= ' . $objPHPExcel->getActiveSheet()-
>getCellByColumnAndRow(0,1)->getValue();
echo '<br />Value A2= ' . $objPHPExcel->getActiveSheet()-
>getCellByColumnAndRow(1,1)->getValue();
echo '<br />Result=' . $objPHPExcel->getActiveSheet()-
>getCellByColumnAndRow(0,1)->getCalculatedValue();
echo '<br />Result=' . $objPHPExcel->getActiveSheet()->getCell("A1")-
>getCalculatedValue();
echo '<br /><br />';
第二个版本在使用字母和字符设置值时按预期工作:
//Version 2 - generating correct result (77*5 = 385)
$objPHPExcel = new PHPExcel();
$objPHPExcel->getActiveSheet()->setCellValue( "A1", '=A2*5' ); //A1
$objPHPExcel->getActiveSheet()->setCellValue( "A2", 77 ); //A2
echo '<br />Value A1= ' . $objPHPExcel->getActiveSheet()->getCell("A1")-
>getValue();
echo '<br />Value A2= ' . $objPHPExcel->getActiveSheet()->getCell("A2")-
>getValue();
echo '<br />Result=' . $objPHPExcel->getActiveSheet()->getCell("A1")-
>getCalculatedValue();
echo '<br />Result=' . $objPHPExcel->getActiveSheet()-
>getCellByColumnAndRow(0,1)->getCalculatedValue();
输出版本 1:
Value A1= =A2*5
Value A2= 77
Result=0
Result=0
输出版本 2:
Value A1= =A2*5
Value A2= 77
Result=385
Result=385
这是 PHPEXcel 中的错误还是我只是做错了什么?
我想使用 setCellValueByColumnAndRow
的原因是我有一个这样的数组,它是根据 post 请求创建的,我想重新计算数组的更改值:(示例上面的version1和version2用于测试它如何与PHPExcel一起工作,与这个数组无关)
array
0 =>
array (size=2)
1 => string '6000' (length=4)
2 => string '=A2*5' (length=5)
1 =>
array (size=2)
1 => string '60009' (length=5)
2 => string '=A2*5' (length=5)
2 =>
array (size=2)
1 => string '7000' (length=4)
2 => string '=A3*5' (length=5)
....
更新:
这不是重复的 PHPExcel setCellValueByColumnAndRow not writing data to spreadsheet,因为该问题与公式计算结果无关。实际值在我的问题中设置到单元格中,但是当使用 getCellValueByColumnAndRow
获取计算值时,它似乎不起作用。我看不到我的问题与标记为可能重复的问题之间的联系。我还更改了这个问题的标题,以更清楚地说明实际问题是什么。
奇怪的是...
有时这很容易...太容易了...出于某种原因我只是混淆了行和列 ):
现在可以使用此代码(如预期):
$objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow( 0, 1, '=A2*5' ); //A1
$objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow( 0, 2, 77 ); //A2
而不是
$objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow( 0, 1, '=A2*5' ); //A1
$objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow( 1, 1, 77 ); //A2