这是我正在使用的代码来设置单元格值。如果数字有分隔符,它可以正常工作。或者/但是当没有分隔符时,它会被保存为int并且前导0被剥离
$sheet->setCellValue($letter[$j].$row_nr,$entity['Phone'], PHPExcel_Cell_DataType::TYPE_STRING);
答案 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>
我希望有人觉得它很有用。以下是格式代码的完整参考:
答案 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可能对案例或列/行删除中的某些人有所帮助,导致单元格格式化丢失...