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