Как заставить 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);

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