Номер не точно напечатан в файле Excel

Я хочу отобразить номера единиц перед именем свойства. Я получил свои данные в $arrobjPropertyName объект массива и в цикле foreach я печатаю его как

foreach( $arrobjPropertyName as $objProperty ) {
    $objWriteExcelWorksheet->write( $intRowCount, $intColumnCount++, $objProperty->getUnitNumber(), $objWorkbookContent );}

он выдаст 613 или 722, но я хочу, чтобы он был как 0613 или 0722 в записи Excel.

Пожалуйста, любые предложения приветствуются.

3 ответа

Решение
foreach( $arrobjPropertyName as $objProperty ) {
    $objWriteExcelWorksheet->write( $intRowCount, $intColumnCount++, "'" . $objProperty->getUnitNumber(), $objWorkbookContent );}

Вы должны сказать, Excell это строка. в противном случае он будет интерпретироваться как число и удалит все начальные 0.

Чтобы быть более сложным: если вы введете 0123 в Excell вручную, он будет автоматически преобразован в 123. Если вы введете "0123 в Excell, вручную, он останется как 0123. Так что не только php должен знать, что это строка (так что php doens не удаляйте 0. но вы также должны сказать исключение явно.

Обновление: извините, забыл, сначала нужно только превзойти

Попробуй это:

foreach( $arrobjPropertyName as $objProperty ) {
    $newNumber='0'.$objProperty->getUnitNumber();
    $objWriteExcelWorksheet->write( $intRowCount, $intColumnCount++,(string)$newNumber, $objWorkbookContent );
}

Читайте жонглирование типов http://php.net/manual/en/language.types.type-juggling.php

Вы можете генерировать строки чисел фиксированной ширины с помощью sprintf.

$textnum = sprintf("%04d", $objProperty->getUnitNumber());

sprintf может также помочь инкапсулировать число в кавычки, если это необходимо для его распознавания в виде строки:

$textnum = sprintf("'%04d'", $objProperty->getUnitNumber());

Другие вопросы по тегам