Вот код, который я использую прямо сейчас, чтобы установить значения ячеек. Он работает нормально, если у числа есть разделители. или /, но когда нет разделителя, он сохраняется как 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>
Надеюсь, кто-то найдет это полезным. Ниже приведена полная ссылка с кодами форматирования:
Я наткнулся на эту тему при поиске решения, и есть еще один ответ, который может быть полезен для кого-то в случае удаления столбца или строки, который заставляет форматирование ячейки потеряться …
Для меня это сделало трюк
// 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);
Как вдохновил этот ответ . Надеюсь, это поможет кому-то.