これが、セル値を設定するために現在使用しているコードです。数値に。のような区切り記号が含まれている場合は問題なく機能します。または/ただし、区切り文字がない場合はintとして保存され、先頭の0が削除されます
$sheet->setCellValue($letter[$j].$row_nr,$entity['Phone'], PHPExcel_Cell_DataType::TYPE_STRING);
どちらか:
// 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');
最初のケースでは、setCellValue()メソッドではなく、setCellValueExplicit()メソッドを呼び出していることに注意してください。コードでは、PHPExcel_Cell_DataType :: TYPE_STRINGをsetCellValue()に渡すことには意味がなく、引数は単に無視されます。
最も簡単な解決策は、setCellValueExplicitByColumnAndRow($ pColumn = 0、$ pRow = 1、$ pValue = null、$ pDataType = PHPExcel_Cell_DataType :: TYPE_STRING)、
$PHPExcel->getActiveSheet()->setCellValueExplicitByColumnAndRow($columnPointer, $rowPointer, $value);
私にとってこれはトリックをしました
// Set the value explicitly as a string
$objPHPExcel->getActiveSheet()->setCellValueExplicit('A1', '0029', PHPExcel_Cell_DataType::TYPE_STRING);
別の解決策に出くわしたので、ここに投稿しようと思いました。これにはライブラリを使用する必要はなく、エクスポートするhtmlテーブルを作成するときに必要な.xlsセルをフォーマットするだけです。
<td style="mso-number-format:'@';">your number w/leading zeroes here</td>
誰かがそれが役に立つと思うことを願っています。以下は、フォーマットコードの完全なリファレンスです。
誰かが私のように進むときはいつでも、これは助けることができます:
$inputFileName = 'file.xls';
$objPHPExcel = PHPExcel_IOFactory::load($inputFileName);
$objWorkSheet = $objPHPExcel->getActiveSheet();
$objWorkSheet->getCell('A1')->setValueExplicit('0029', PHPExcel_Cell_DataType::TYPE_STRING);
この回答 に触発されました。これが誰かの助けになることを願っています。
私は解決策を探しているときにこのスレッドに出くわしました 私の他の答えがあります セルのフォーマットが失われる原因となるケースまたは列/行の削除の誰かに役立つかもしれません...