使用类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/

10-12 15:06