Всегда показывать указанное число знаков после запятой в Excel
Мне нужно отобразить два десятичных знака в Excel (xlsx). Я использую PHPExcel
. В PHP я могу использовать что-то вроде следующего, чтобы отображать только указанное число десятичных шагов.
echo sprintf("%0.2f", $row['price']);
который всегда отображает два десятичных знака, даже если значение не содержит десятичной точки i.e, если значение $row['price']
равно 1500
, оно будет эхо 1500.00
. Мне нужно написать такое же значение, чтобы преуспеть. Я попробовал
$sheet->setCellValue("A1", sprintf("%0.2f", $row['price']));
но отображает 1500
вместо отображения 1500.00
(поскольку Excel автоматически предполагает, что это числовое значение, а часть после десятичной точки i.e .00
в этом случае усекается).
Я также пробовал следующее
$sheet->getStyle("A1")->getNumberFormat()->setFormatCode('0.00');
но этого недостаточно для достижения того, что указано.
Как я могу (всегда) отображать указанное число десятичных знаков в Excel с помощью PHPExcel?
Ответы
Ответ 1
$sheet->getStyle("A1")->getNumberFormat()->setFormatCode('0.00');
должен работать, если значение в ячейке A1 является числом, а не форматированной строкой... не пытайтесь форматировать форматирование Excel с помощью sprintf, просто используйте коды формата.
Ответ 2
Отформатировано как число с запятой. Предполагая, что значение не будет превышено на 9 цифр.
$sheet->getStyle("A1")->getNumberFormat()->setFormatCode('###,###,###.##');
Ответ 3
Если вам нужны специальные символы, просто используйте html_entity_decode:
$currencyFormat = html_entity_decode("€ 0,0.00",ENT_QUOTES,'UTF-8');
$objPHPExcel->getActiveSheet()
->getStyle("A1")
->getNumberFormat()->setFormatCode($currencyFormat);
Ответ 4
$objPHPExcel->getActiveSheet()->getStyle('ce')->getNumberFormat()->setFormatCode('0.00');
Ответ 5
Вы также можете сделать это:
$sheet->setCellValue("A1",sprintf("%0.2f",$row['price']),true)->getStyle()->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER_00);
Добавление "true" в setCellValue, вы ссылаетесь непосредственно на ячейку вместо рабочего листа, и вы можете вызвать метод getStyle без значения ячейки.
Ответ 6
Try:
$sheet->getStyle("A1")->getNumberFormat()->setFormatCode('### ### ### ##0.00');
он работает.