Всегда показывать указанное число знаков после запятой в 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');

он работает.