PHPExcel не может показать символ валюты - PullRequest
0 голосов
/ 29 мая 2018

Меня попросили отредактировать файл, который использует устаревшую библиотеку PHPExcel .. Мне не разрешено обновлять PHPSpreadSheet, поэтому мне нужно разобраться с этим с помощью PHPExcel.Я пытаюсь показать символ валюты с помощью следующего кода:

$activeSheet->getStyle($col.$row)
            ->getNumberFormat()
            ->setFormatCode('_("$"* #,##0.00_);_("$"* \(#,##0.00\);_("$"* "-"??_);_(@_)');

Я также пытался с кодом формата € ####0,00 и € ##,##0.00 без удачи ..

СтранноПоведение происходит, когда я открываю файл, нажимаю на ячейку и нажимаю клавишу возврата, не внося никаких изменений, тогда символ валюты отображается правильно.Как я могу заставить это работать без какого-либо ручного вмешательства?

Спасибо

Ответы [ 2 ]

0 голосов
/ 30 мая 2018

Я решил проблему.Проблема была вызвана разделителем десятичных дробей и тысяч, который не соответствовал используемому коду формата.

$price = number_format( $raw_price, 2, ".", "");
$activeSheet->setCellValue("G$row", $price)
$activeSheet->getStyle("G$row")->getNumberFormat()->setFormatCode( '"€" ###0,00_-' );

Мне просто нужно было отредактировать следующее:

$price = number_format( $raw_price, 2, ",", "");
0 голосов
/ 29 мая 2018

Согласно этому примеру PHPExcel , вы можете использовать предопределенные константы:

$spreadsheet->getActiveSheet()
            ->getStyle('E4:E13')
            ->getNumberFormat()
            ->setFormatCode(NumberFormat::FORMAT_CURRENCY_USD_SIMPLE);

$spreadsheet->getActiveSheet()
            ->getStyle('E4:E13')
            ->getNumberFormat()
            ->setFormatCode(NumberFormat::FORMAT_CURRENCY_EUR_SIMPLE);

Эти константы определены в PHPExcel_Style_NumberFormat :

const FORMAT_CURRENCY_USD_SIMPLE        = '"$"#,##0.00_-';
const FORMAT_CURRENCY_USD               = '$#,##0_-';
const FORMAT_CURRENCY_EUR_SIMPLE        = '[$EUR ]#,##0.00_-';

Или вы можете определить свой собственный, но помните, что они должны соответствовать форматам ячеек Excel.

Затем укажите значение ячейки в виде простого числа с плавающей запятой, без символа валюты или разделителя тысяч..

...