使用类PHPExcel在Excel文件中写入数据时。
这是在编写器工作时发生的,而不是在将数据添加到单元格$this->sheet->setCellValue()
中时发生的
Fatal error: Uncaught exception 'PHPExcel_Calculation_Exception' with message 'Adressen!AF20955 -> Formula Error: Unexpected operator '>'' in \Cell.php:300 Stack trace:
#0 \PHPExcel\Worksheet.php(754): PHPExcel_Cell->getCalculatedValue()
#1 \PHPExcel\Writer\Excel2007\Worksheet.php(373): PHPExcel_Worksheet->calculateColumnWidths()
#2 \PHPExcel\Writer\Excel2007\Worksheet.php(80): PHPExcel_Writer_Excel2007_Worksheet->_writeCols(Object(PHPExcel_Shared_XMLWriter), Object(PHPExcel_Worksheet))
#3 \PHPExcel\Writer\Excel2007.php(304): PHPExcel_Writer_Excel2007_Worksheet->writeWorksheet(Object(PHPExcel_Worksheet), Array, false)
#4 \excel.php(131): PHPExcel_Writer_Excel2007->save('...')
#5 \excel. in \PHPExcel\Cell.php on line 300
我从不使用函数
PHPExcel_Cell->getCalculatedValue()
写入Excel,而仅使用$this->sheet->setCellValue('A1', $value)
。我不需要在Excel文件中计算任何公式。只是将DB2数据导出到该文件。
$value
很可能包含诸如= + - > <
之类的公式字符(因为AF20955
单元确实导致>
导致致命错误),但这不应解释为公式,而应解释为字符串的一部分。我该如何解决这个问题? 最佳答案
保存时默认调用PHPExcel计算引擎,但是您可以通过调用告诉编写者不要应用它
$objWriter->setPreCalculateFormulas(false);
通话之前要保存
当您通过调用
setCellValue()
或类似方法设置单元格值时,PHPExcel将尝试识别数据类型并使用值绑定(bind)器在内部进行适当设置(与MS Excel完全相同)。以此方式将包含=
作为第一个字符的单元格视为公式。如果要确保将它们视为字符串而不是公式,则最简单的方法是使用
setCellValueExplicit()
。关于php - 防止PHPExcel在写入文件时计算值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33439187/