Номер не точно напечатан в файле 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());