web-dev-qa-db-ja.com

phpexcelに電話番号の先頭の0を維持させる方法は?

これが、セル値を設定するために現在使用しているコードです。数値に。のような区切り記号が含まれている場合は問題なく機能します。または/ただし、区切り文字がない場合はintとして保存され、先頭の0が削除されます

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

どちらか:

// 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()に渡すことには意味がなく、引数は単に無視されます。

25
Mark Baker

最も簡単な解決策は、setCellValueExplicitByColumnAndRow($ pColumn = 0、$ pRow = 1、$ pValue = null、$ pDataType = PHPExcel_Cell_DataType :: TYPE_STRING)、

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

私にとってこれはトリックをしました

// Set the value explicitly as a string
$objPHPExcel->getActiveSheet()->setCellValueExplicit('A1', '0029', PHPExcel_Cell_DataType::TYPE_STRING);
2
Alex

別の解決策に出くわしたので、ここに投稿しようと思いました。これにはライブラリを使用する必要はなく、エクスポートするhtmlテーブルを作成するときに必要な.xlsセルをフォーマットするだけです。

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

誰かがそれが役に立つと思うことを願っています。以下は、フォーマットコードの完全なリファレンスです。

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

1
Juan M

誰かが私のように進むときはいつでも、これは助けることができます:

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

この回答 に触発されました。これが誰かの助けになることを願っています。

1
sk001

私は解決策を探しているときにこのスレッドに出くわしました 私の他の答えがあります セル​​のフォーマットが失われる原因となるケースまたは列/行の削除の誰かに役立つかもしれません...

0
Tomasz