如何让phpexcel在电话号码中保持领先0?

时间:2012-03-09 13:56:19

标签: php phpexcel

这是我正在使用的代码来设置单元格值。如果数字有分隔符,它可以正常工作。或者/但是当没有分隔符时,它会被保存为int并且前导0被剥离

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

5 个答案:

答案 0 :(得分:21)

或者:

// 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()没有任何意义,并且简单地忽略该参数。

答案 1 :(得分:8)

最简单的解决方案是使用setCellValueExplicitByColumnAndRow($ pColumn = 0,$ pRow = 1,$ pValue = null,$ pDataType = PHPExcel_Cell_DataType :: TYPE_STRING),

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

答案 2 :(得分:1)

刚刚遇到了另一种解决方案,我想我会在这里发布。这不需要使用库,只需在创建要导出的html表时格式化所需的.xls单元格。

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

我希望有人觉得它很有用。以下是格式代码的完整参考:

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

答案 3 :(得分:1)

每当有人像我一样继续前进时,这可以提供帮助:

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

受到this answer的启发。我希望这有助于某人。

答案 4 :(得分:0)

我在寻找解决方案时遇到了这个问题,there is my other answer可能对案例或列/行删除中的某些人有所帮助,导致单元格格式化丢失...