如何在PhpSpreadSheet中设置货币格式?

时间:2018-09-11 18:12:46

标签: php phpexcel phpspreadsheet

我正在使用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');

但是它不起作用。 有任何想法吗?还是我做错了? 预先感谢。

4 个答案:

答案 0 :(得分:3)

我能够使用PHPSpreadsheet执行以下操作:

$spreadsheet->getActiveSheet()
    ->getStyle($thisCol)
    ->getNumberFormat()
    ->setFormatCode(PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_CURRENCY_USD_SIMPLE);

FORMAT_CURRENCY_USD_SIMPLE == '"$"#,##0.00_-'的格式代码

答案 1 :(得分:1)

如果您正在使用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

答案 2 :(得分:0)

尝试一下:

<?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);

答案 3 :(得分:0)

PHPSpreadSheet无法做到这一点。万一有人遇到同样的问题,这就是我所做的(不是适当的解决方案,但这是什么)。

我创建了一个函数来返回带有货币符号的值。

public function formatValueMoney($number){
  $val = number_format($number,2,".",",");
  $setVal = '$'.$val;

  return $setVal;
}

$int = formatValueMoney(34567898765);
echo $int;

结果: $ 34,567,898,765.00 是结果。我刚刚将其添加到单元格中。