写入文件时防止 PHPExcel 计算值
Prevent PHPExcel to calculate values when writing to file
使用 class 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 将尝试识别数据类型并在内部适当地设置它(以完全相同的方式作为 MS Excel) 使用值绑定器。包含 =
作为第一个字符的单元格将被视为公式。
如果要确保它们被视为字符串而不是公式,那么最简单的方法是使用 setCellValueExplicit()
。
使用 class 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 将尝试识别数据类型并在内部适当地设置它(以完全相同的方式作为 MS Excel) 使用值绑定器。包含 =
作为第一个字符的单元格将被视为公式。
如果要确保它们被视为字符串而不是公式,那么最简单的方法是使用 setCellValueExplicit()
。