Предотвратите PHPExcel для вычисления значений при записи в файл

При записи моих данных в файл Excel с классом PHPExcel.

Это происходит, когда автор работает, а не при добавлении данных в ячейки $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), используя связующее значение. Клетки, которые содержат a = как первый символ, будут считаться формулами.

Если вы хотите убедиться, что они рассматриваются как строки вместо формул, тогда самый простой способ – использовать setCellValueExplicit() .