将公式替换为单元格值PHPExcel

将公式替换为单元格值PHPExcel,php,excel,phpexcel,Php,Excel,Phpexcel,类似于这些文档 (适用于Mac) 及 (适用于Windows) 我们可以使用PHPExcel用单元格值替换公式吗 例如:给定单元格“A1”,其中包含公式“='Sheet1'!L2”。公式等于1。 是否有方法替换保持“1”的函数并用PHPExcel擦除输入公式 如果没有,这对于优化和消除->getOldCalculatedValue/getCalculatedValue/->setPreCalculateFormulas()中出现的过多问题非常方便 谢谢你 $objPHPExcel->get

类似于这些文档

(适用于Mac) 及 (适用于Windows)

我们可以使用PHPExcel用单元格值替换公式吗

例如:给定单元格“A1”,其中包含公式“='Sheet1'!L2”。公式等于1。 是否有方法替换保持“1”的函数并用PHPExcel擦除输入公式

如果没有,这对于优化和消除->getOldCalculatedValue/getCalculatedValue/->setPreCalculateFormulas()中出现的过多问题非常方便

谢谢你

$objPHPExcel->getActiveSheet()
    ->setCellValue(
        'A1',
        $objPHPExcel->getActiveSheet()
            ->getCell('A1')
            ->getCalculatedValue()
    );

尽管我看不出它是如何优化任何东西的,因为您仍然需要计算公式才能得到值。是的,但在我的例子中,单元格A1正确地保存了一个值。使用PHPExcel保存后,getCalculatedValue抛出catch异常,getOldCalculatedValue返回0。我已经阅读了您关于设置setPreCalculateFormulas()的所有评论。但是我的代码返回了一个致命错误:未捕获的异常“PHPExcel\u Calculation\u exception”和消息“Data!”!I1->公式错误:在/Applications/MAMP/htdocs/GenRe/Classes/PHPExcel/Cell.php:300堆栈跟踪:#0和数据中发生意外错误!I1是一个字符串而不是一个公式。因此,如果我们可以将excel文件与包含正确值的单元格(例如A1单元格的1)一起保存,然后编写代码强制该单元格将公式替换为1值。那么在很多情况下不会出现错误。这样我们就忽略了getCalculatedValue函数。你不这么认为吗?除非PHPExcel能够计算公式本身来得到值,否则就没有真正的替代方案了
getOldCalculatedValue()
是不可信的,有太多的方式使该值可能是错误的(甚至不存在),而不仅仅是一个紧急回退。。。。。如果你一定要做这个替换;然后
$objPHPExcel->getActiveSheet()->setCellValue('A1',$objPHPExcel->getActiveSheet()->getCell('A1')->getOldCalculatedValue())但请注意,
getOldCalculatedValue()
可能并不总是返回正确的值。如果不是,则返回0。我会尝试使用->FormulaValue函数,看看是否能按我的要求完成。我会随时通知你的。无论如何,谢谢。通过复制“CMD+=”我们可以节省大量时间。所以A1单元包含公式。我们做$objPHPExcel->getActiveSheet()->getCell('A1')->FormulaValue();我们将在不进行计算的情况下获取单元格内容,并在复制“CMD+=”的公式栏中替换它。那太好了。!对不起,请用英语。。。。这是什么
FormulaValue()
方法?它有什么作用?它从何而来?没有什么可以阻止您编写代码,在任何原始公式前面加上
CMD+=
现在:
$objPHPExcel->getActiveSheet()->setCellValue('A1','CMD+'。$objPHPExcel->getActiveSheet()->getCell('A1')->getValue()我只是看不到它能达到什么目的,他们的分数。用英语。此公式值()尚未开发。开发完成后,使用此PHPExcel扩展,FormulaValue()方法将单元格值作为文本,并用单元格值文本替换公式栏中的公式。因此,它将使用单元格值超越现有公式。你不认为它很好用吗?我看不出单元格值来自哪里?如果您有一个包含公式
=1+2
,那么这个神奇的
FormulaValue()
方法如何知道用
3
替换它?