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

How to set money format in 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');

但是没用。 有任何想法吗?还是我做错了? 提前致谢。

试试这个:

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

我无法使用 PHPSpreadSheet 完成此操作。如果有人遇到同样的问题,这就是我所做的(不是一个合适的解决方案,但它是某种东西)。

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

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

  return $setVal;
}

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

结果是:$34,567,898,765.00。我刚刚在单元格中添加了这个。

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

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

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

如果你正在使用 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 换取美元

Note: You can also add _SIMPLE e.g. FORMAT_CURRENCY_EUR_SIMPLE if you like to show two decimal point values e.g. 12,62 € instead of 12 €

检查 class \PhpOffice\PhpSpreadsheet\Style\NumberFormat 以找出所有可能的值。

class存储在vendor\phpoffice\phpspreadsheet\src\PhpSpreadsheet\Style\NumberFormat.php