Как заставить phpexcel удерживать лидирующие нули в телефонных номерах? - PullRequest
12 голосов
/ 09 марта 2012

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

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

Ответы [ 6 ]

21 голосов
/ 09 марта 2012

Или:

// 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');

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

8 голосов
/ 15 мая 2013

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

$PHPExcel->getActiveSheet()->setCellValueExplicitByColumnAndRow($columnPointer, $rowPointer, $value);
2 голосов
/ 26 августа 2015

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

// Set the value explicitly as a string
$objPHPExcel->getActiveSheet()->setCellValueExplicit('A1', '0029', PHPExcel_Cell_DataType::TYPE_STRING);
1 голос
/ 05 июля 2017

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

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

По вдохновению этого ответа Я надеюсь, что это поможет кому-то.

1 голос
/ 04 августа 2015

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

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

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

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

0 голосов
/ 22 января 2014

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

...