PHPExcel 无法显示货币符号

PHPExcel can't show currency symbol

我被要求编辑一个使用已弃用的 PHPExcel 库的文件。我不允许更新到 PHPSpreadSheet,所以我需要使用 PHPExcel 解决这个问题。 我正在尝试使用以下代码显示货币符号:

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

我也试过格式代码 € ####0,00€ ##,##0.00 但没有成功..

当我打开文件时出现奇怪的行为,我单击单元格并按 return 键而不做任何更改,然后货币符号正确显示。我怎样才能在没有任何人工干预的情况下让它工作?

谢谢

根据this PHPExcel example,您可以使用预定义常量:

$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 单元格格式。

然后将单元格值作为简单的浮点数提供,没有货币符号或千位分隔符。

我解决了这个问题。问题是由小数点和千位分隔符引起的,它们与使用的格式代码不匹配。

$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, ",", "");