2010-06-16 72 views
30

我正在尝试使用PHP创建一个包含电话号码列表的文件。 工作正常,但是如果电话号码以零开头,则数字将从Excel文件中删除。字符串/数字的正确格式从零开始?

有谁知道如何正确设置格式,使其保持原状?

回答

68

或者:

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

值谢谢你,马克。 – Francisc 2010-11-13 23:52:12

+2

就像给未来读者的一张纸条,第二个选项似乎不起作用,它只是将它设置为一个数字。但第一个选项很好,谢谢。 – 2012-08-26 15:02:47

+0

这两个选项都适用于我的xlsx和xls文件,还没有测试过其他的作家 – 2012-11-26 16:20:48

16

明确设置类型的字符串:

$type = PHPExcel_Cell_DataType::TYPE_STRING; 
$sheet->getCellByColumnAndRow($column, $rowno)->setValueExplicit($value, $type); 
1

这是一个老问题,但最近我这个问题,我挣扎以为如果我在这里发布一些额外的信息,它可能有助于未来某人:

虽然上述答案是正确的,但当您删除位于格式化单元格之前的列或行时,格式会丢失。

,这似乎是resistand到解决的办法是:

$cellRichText = new \PHPExcel_RichText($worksheet->getCell($cell));       
$cellRichText->createText($cellValue); 
1

如果由于某些原因上述问题的答案不工作,你可以简单地尝试来包装你的数据在引号,像这样:

setCellValue('A1, '"' . $phone . '" ') 

但是你的价值将会被文件中的引号包围。

0

使用\t与像"$phone\t"

+0

伟大的解决方案。 – Kalai 2016-09-08 11:38:35

+0

这将在值字段中添加一个选项卡。如果你想复制它没有空格/制表符和麻烦不是很好。 – CodeBrauer 2016-10-24 08:49:10