使用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
确实导致>
致命错误)但这不应被解释为公式但仅作为字符串的一部分。我该如何解决这个问题呢?
答案 0 :(得分:10)
保存时默认调用PHPExcel计算引擎,但您可以通过调用
告诉编写者不要应用它$objWriter->setPreCalculateFormulas(false);
在保存调用之前
当您通过调用setCellValue()
或类似设置单元格值时,PHPExcel将尝试使用值绑定器识别数据类型并在内部对其进行适当设置(与MS Excel完全相同)。包含=
作为第一个字符的单元格将被视为公式。
如果您想确保将它们视为字符串而不是公式,那么最简单的方法是使用setCellValueExplicit()
代替。