1

問題は非常に複雑なワークシートで始まりましたが、非常に単純なものに減らしましたが、まだ同じ問題があります。

PHPExcelは数式を計算していませんが、単純なもの(=B3)に変更すると機能します。

getvalue() によって返される式は次のとおりです。

=IF(B3="","",IF(C8="N",IF(ISERR(VALUE(B3)),0,VALUE(B3)),T(B3)))

私のコード。

require_once dirname(__FILE__) . '/../phpxl/Classes/PHPExcel.php'; 
set_include_path(get_include_path() . PATH_SEPARATOR . '/../phpxl/Classes/'); 
$template = "test.xlsx"; 
$objReader = PHPExcel_IOFactory::createReader('Excel2007'); 
$objPHPExcel = $objReader->load($template); 
$objPHPExcel->getActiveSheet()->getCell('B3')->setValue(8); 
$result = $objPHPExcel->getActiveSheet()->getCell('B8')->getCalculatedValue(); 
$result1 = $objPHPExcel->getActiveSheet()->getCell('B8')->getValue(); 
echo $result.'<br>'; 
echo $result1.'<br>';

B3 セルに値 8 を設定しています。Excel でこれを行うと、B8 で同じ値が計算されます。

C8には「N」があります。

しかし、phpexcelを使用すると、(2.1)で保存された値を常に取得します

応答: 2.1 =IF(B3="","",IF(C8="N",IF(ISERR(VALUE(B3)),0,VALUE(B3)),T(B3)))

Excel ファイルで B8 の数式を '=B3' に置き換えると、結果 '8' が表示されて完全に機能します。

回答: 8 =B3

だから私はそれが式の問題だと考えなければなりません。

関数は非常に単純で、IF、T、VALUE、ISERR です。

すべての二重引用符を変更しても問題は解決しません。

=IF(ISBLANK(B3),NA(),IF(C8="N",IF(ISERR(VALUE(B3)),0,VALUE(B3)),T(B3))) 

これを回避するためのアイデアは大歓迎です。

Tks

4

1 に答える 1

1

これは、(ドキュメントに記載されているように) VALUE() 関数がまだ PHPExcel 計算エンジンに実装されていないためです。

于 2013-05-08T21:54:55.863 に答える