2017-05-05 31 views
-1

PHPExcelでsetCellValueByColumnAndRowを使用すると、結果に影響を与えない理由を理解しようとしています。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 />'; 

この第二版(計算された値を取得するために2つの異なるアプローチを用いて試み)整数に結果を設定します

//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を使用したい理由は、私はポストリクエストから作成されたこのような配列を持っており、配列の変更された値を再計算したいのです。(上記のversion1とversion2の例は、 UPDATE

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と協力し、この配列とは何の関係もありません:その質問は、式の計算の結果とは何の関係もなかったので、 これは、重複PHPExcel setCellValueByColumnAndRow not writing data to spreadsheetではありません。実際の値は私の質問の中でセルに設定されていますが、計算された値をgetCellValueByColumnAndRowで取り出すときにはうまくいかないようです。私は私の質問と可能な限り重複していると思われる質問との関連を見ません。また、この問題のタイトルを変更して、実際の問題点をより明確にしました。

+0

ことはできませんが[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 

とD

$objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(0, 1, '=A2*5'); //A1 
$objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(1, 1, 77); //A2 
関連する問題