如何在 PhpSpreadSheet 中设置货币格式?
Posted
技术标签:
【中文标题】如何在 PhpSpreadSheet 中设置货币格式?【英文标题】:How to set money format in PhpSpreadSheet? 【发布时间】:2019-02-16 07:27:22 【问题描述】:我正在使用 phpSpreadSheet,我想为单元格设置货币格式。 在 PHPExcel 中,您可以使用以下几行来执行此操作...
$this->phpExcelObject->getActiveSheet()
->getStyle('D4')
->getNumberFormat()
->setFormatCode(\PHPExcel_Style_NumberFormat::FORMAT_CURRENCY_USD_SIMPLE);
我在 PHPSpreadSheet 中尝试过,这就是我所做的...
$this->spreadsheet->getActiveSheet()
->getStyle('D4')
->getNumberFormat()
->setFormatCode('$ #,##0.00');
但它不起作用。 有任何想法吗?还是我做错了? 提前致谢。
【问题讨论】:
【参考方案1】:我能够使用 PHPSpreadsheet 执行以下操作:
$spreadsheet->getActiveSheet()
->getStyle($thisCol)
->getNumberFormat()
->setFormatCode(PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_CURRENCY_USD_SIMPLE);
FORMAT_CURRENCY_USD_SIMPLE
==
'"$"#,##0.00_-'
的格式代码
【讨论】:
如果我想将 XXXXXXXX 转换为 X,XX,XX,XXX.00,格式代码是什么。而不是 XX,XXX,XXX.00 ?【参考方案2】:如果您使用的是applyFromArray,您可以使用它:
$sheet = $spreadsheet->getActiveSheet();
$sheet->getStyle($thisCol)->applyFromArray(
'numberFormat' => [
'formatCode' => \PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_CURRENCY_EUR
]
);
否则像这样使用它:
$sheet = $spreadsheet->getActiveSheet();
$sheet->getStyle($thisCol)
->getNumberFormat()
->setFormatCode(PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_CURRENCY_EUR);
使用FORMAT_CURRENCY_USD
换美元
注意:您还可以添加 _SIMPLE 例如FORMAT_CURRENCY_EUR_SIMPLE 如果您想显示两个小数点值,例如12,62 欧元而不是 12 欧元
查看\PhpOffice\PhpSpreadsheet\Style\NumberFormat
类以找出所有可能的值。
类存储在vendor\phpoffice\phpspreadsheet\src\PhpSpreadsheet\Style\NumberFormat.php
【讨论】:
【参考方案3】:试试这个:
<?php
use \PhpOffice\PhpSpreadsheet\Spreadsheet;
use \PhpOffice\PhpSpreadsheet\Cell\DataType;
$xls = new Spreadsheet();
$sheet = $xls->getActiveSheet();
$sheet->getStyle('D4')->getNumberFormat()->setFormatCode('###,###,###.##');
$sheet->setCellValueExplicit('D4', $your_value, DataType::TYPE_NUMERIC);
【讨论】:
【参考方案4】:我无法用 PHPSpreadSheet 做到这一点。万一有人遇到同样的问题,这就是我所做的(不是一个正确的解决方案,但确实如此)。
我创建了一个函数来返回带有货币符号的值。
public function formatValueMoney($number)
$val = number_format($number,2,".",",");
$setVal = '$'.$val;
return $setVal;
$int = formatValueMoney(34567898765);
echo $int;
结果是:$34,567,898,765.00。我刚刚在单元格中添加了这个。
【讨论】:
以上是关于如何在 PhpSpreadSheet 中设置货币格式?的主要内容,如果未能解决你的问题,请参考以下文章