При записи моих данных в файл 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()
.