Как заставить phpexcel вести ведущие 0 в телефонных номерах?

Вот код, который я использую прямо сейчас, чтобы установить значения ячеек. Он работает нормально, если у числа есть разделители. или /, но когда нет разделителя, он сохраняется как int, а ведущий 0 лишается

$sheet->setCellValue($letter[$j].$row_nr,$entity['Phone'], PHPExcel_Cell_DataType::TYPE_STRING); 

Или:

 // Set the value explicitly as a string $objPHPExcel->getActiveSheet()->setCellValueExplicit('A1', '0029', PHPExcel_Cell_DataType::TYPE_STRING); 

или

 // Set the value as a number formatted with leading zeroes $objPHPExcel->getActiveSheet()->setCellValue('A3', 29); $objPHPExcel->getActiveSheet()->getStyle('A3')->getNumberFormat()->setFormatCode('0000'); 

Обратите внимание, что в первом случае я вызываю метод setCellValueExicit (), а не метод setCellValue (). В вашем коде передача PHPExcel_Cell_DataType :: TYPE_STRING в setCellValue () не имеет смысла, и аргумент просто игнорируется.

Самое простое решение – использовать setCellValueExplicitByColumnAndRow ($ pColumn = 0, $ pRow = 1, $ pValue = null, $ pDataType = PHPExcel_Cell_DataType :: TYPE_STRING),

 $PHPExcel->getActiveSheet()->setCellValueExplicitByColumnAndRow($columnPointer, $rowPointer, $value); 

Просто наткнулся на альтернативное решение, и я подумал, что отправлю его здесь. Это не требует использования библиотек, а просто форматирует необходимые ячейки .xls при создании таблицы html для экспорта.

 <td style="mso-number-format:'@';">your number w/leading zeroes here</td> 

Надеюсь, кто-то найдет это полезным. Ниже приведена полная ссылка с кодами форматирования:

http://www.ozgrid.com/Excel/CustomFormats.htm

Я наткнулся на эту тему при поиске решения, и есть еще один ответ, который может быть полезен для кого-то в случае удаления столбца или строки, который заставляет форматирование ячейки потеряться …

Для меня это сделало трюк

 // Set the value explicitly as a string $objPHPExcel->getActiveSheet()->setCellValueExplicit('A1', '0029', PHPExcel_Cell_DataType::TYPE_STRING); 

Всякий раз, когда кто-то поступает так, как я, это может помочь:

 $inputFileName = 'file.xls'; $objPHPExcel = PHPExcel_IOFactory::load($inputFileName); $objWorkSheet = $objPHPExcel->getActiveSheet(); $objWorkSheet->getCell('A1')->setValueExplicit('0029', PHPExcel_Cell_DataType::TYPE_STRING); 

Как вдохновил этот ответ . Надеюсь, это поможет кому-то.