PHPExcel: проблема при записи типа данных ячейки - PullRequest
0 голосов
/ 22 февраля 2019

У меня есть PHP-код для экспорта данных в Excel.Использовал библиотеку PHPExcel для того же.

Библиотека PHPExcel версии 1.7.6

Мы столкнулись с проблемой при записи следующего значения == PD == [HW] ПОЛУЧЕНИЕ ОШИБОК CRC

Когда я открываю Excel вручную и устанавливаю тип данных ячейки как ТЕКСТ, он принимает это значение.

Но при попытке создать Excel с использованием библиотеки PHPExcel,получая ошибку, как показано ниже исключение 'Исключение' с сообщением 'L14 -> Ошибка формулы: неожиданный оператор' = ''

Я попытался решить эту проблему, установив тип данных ячейкикак STRING, но не повезло ... Ниже приводятся способы установки типа данных ячейки ...

#first try
$activeSheet->setCellValueExplicit($symptomColumn.$rowCount, $val, PHPExcel_Cell_DataType::TYPE_STRING);

#second try
$activeSheet->getCell($symptomColumn.$rowCount)->setValueExplicit($val, PHPExcel_Cell_DataType::TYPE_STRING);

#third try
$activeSheet->getCell($symptomColumn.$rowCount)->setDataType(PHPExcel_Cell_DataType::TYPE_STRING);

#fourth try
$activeSheet->getStyle($symptomColumn.$rowCount)
                                    ->getNumberFormat()
                                    ->setFormatCode(
                                        PHPExcel_Style_NumberFormat::FORMAT_GENERAL
                                    );

#fifth try
$activeSheet->getStyle($symptomColumn.$rowCount)
                                    ->getNumberFormat()
                                    ->setFormatCode(
                                        PHPExcel_Style_NumberFormat::FORMAT_TEXT
                                    );

Может кто-нибудь, пожалуйста, помогите мне решить проблему при написании текста "== PD == [HW] ПОЛУЧЕНИЕ ОШИБОК CRC "в ячейку при создании Excel с использованием библиотеки PHPExcel?

Заранее спасибо ...

1 Ответ

0 голосов
/ 23 февраля 2019

Если PHPExcel встречает ячейку, где первый символ содержимого - =, то он считает эту ячейку формулой Excel и попытается оценить ее как таковую.Если это на самом деле не формула, тогда будет выброшено исключение, подобное этому.В PHPExcel нет простого решения, кроме как предложить добавить начальный пробел (или другой символ) перед =.PHPExcel больше не является поддерживаемой библиотекой, и эта ошибка не будет исправлена ​​(особенно в более старой версии, которую вы используете).

Последняя ветвь master библиотеки-наследника PHPSpreadsheet содержит исправление для этого,позволяя вам установить стиль ячейки для цитируемого текста.Это определит, что это не формула для механизма вычислений, а аналогично тому, что вам рекомендуется делать в самом MS Excel.

$workSheet->setCellValue('A2', "==PD==[HW]RECEIVING CRC ERRORS");
$workSheet->getCell('A2')->getStyle()->setQuotePrefix(true);
...