2017-05-05 67 views
-1

我試圖弄清楚爲什麼在使用setCellValueByColumnAndRow與PHPExcel時結果不受影響。getCellValueByColumnAndRow-> getCalculatedValue()不工作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請求中創建的,我想重新計算數組的改變值:(上面版本1和版本2的例子用於測試它的方式與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) 
.... 

UPDATE: 這不是重複PHPExcel setCellValueByColumnAndRow not writing data to spreadsheet,因爲這個問題已經無關公式計算的結果。實際值是在我的問題中設置到單元格中的,但是在使用getCellValueByColumnAndRow獲取計算值時似乎不起作用。我不認爲我的問題和被標記爲可能重複的問題之間存在關聯。我也改變了這個問題的標題,以便更清楚地說明實際問題。

+0

可能d [PHPExcel的setCellValueByColumnAndRow不寫入數據到電子表格](http://stackoverflow.com/questions/11468606/phpexcel-setcellvaluebycolumnandrow-not-writing-data-to-spreadsheet) –

+0

@Deep 3015 - 這不是重複的,因爲這個問題與公式計算的結果無關。 – bestprogrammerintheworld

回答

1

奇怪的是......

有時它是那麼容易......遠遠地容易...我只是混行和列因某種原因):

現在,它的工作原理與此代碼(如預計):

$objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(0, 1, '=A2*5'); //A1 
$objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(0, 2, 77); //A2 

和NOT

$objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(0, 1, '=A2*5'); //A1 
$objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(1, 1, 77); //A2