如何在 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 中设置货币格式?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 DataSet 中设置单元格?帮助!

如何在ssrs报告的表达式中设置货币和1000分隔符

如何在 UITableView 中设置单元格高度?

如何在 PHPSpreadsheet 中更改单元格颜色

如何使用 pyside 在 QtableView 单元格中设置数据

我们如何在 uitableview 单元格中设置标签约束?