Как заставить phpexcel вести ведущие 0 в телефонных номерах?
Здесь код, который я использую прямо сейчас, чтобы установить значения ячейки. Он работает нормально, если у числа есть разделители. или /, но когда нет разделителя, он сохраняется как int, а ведущее 0 удаляется
$sheet->setCellValue($letter[$j].$row_nr,$entity['Phone'], PHPExcel_Cell_DataType::TYPE_STRING);
Ответы
Ответ 1
Или:
// 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() не имеет смысла, и аргумент просто игнорируется.
Ответ 2
Самое простое решение - использовать setCellValueExplicitByColumnAndRow ($ pColumn = 0, $pRow = 1, $pValue = null, $pDataType = PHPExcel_Cell_DataType:: TYPE_STRING),
$PHPExcel->getActiveSheet()->setCellValueExplicitByColumnAndRow($columnPointer, $rowPointer, $value);
Ответ 3
Просто наткнулся на альтернативное решение, и я подумал, что отправлю его здесь. Это не требует использования библиотек, а просто форматирует необходимые ячейки .xls при создании экспортируемой таблицы html.
<td style="mso-number-format:'@';">your number w/leading zeroes here</td>
Надеюсь, кто-то найдет это полезным. Ниже приведена полная ссылка на коды форматирования:
http://www.ozgrid.com/Excel/CustomFormats.htm
Ответ 4
Я искал эту тему при поиске решения и есть мой другой ответ, который может быть полезен для кого-то в случае удаления столбца или строки, который вызывает форматирование ячейки заблудиться...
Ответ 5
Для меня это сделало трюк
// Set the value explicitly as a string
$objPHPExcel->getActiveSheet()->setCellValueExplicit('A1', '0029', PHPExcel_Cell_DataType::TYPE_STRING);
Ответ 6
Всякий раз, когда кто-то поступает так, как я, это может помочь:
$inputFileName = 'file.xls';
$objPHPExcel = PHPExcel_IOFactory::load($inputFileName);
$objWorkSheet = $objPHPExcel->getActiveSheet();
$objWorkSheet->getCell('A1')->setValueExplicit('0029', PHPExcel_Cell_DataType::TYPE_STRING);
Как вдохновил этот ответ. Надеюсь, это поможет кому-то.