Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to set money format in PhpSpreadSheet?

I'm using PHPSpreadSheet and I want to set money format for a cell. In PHPExcel you can do this by using the following lines...

$this->phpExcelObject->getActiveSheet()
     ->getStyle('D4')
     ->getNumberFormat()
     ->setFormatCode(\PHPExcel_Style_NumberFormat::FORMAT_CURRENCY_USD_SIMPLE);

I tried to this in PHPSpreadSheet, this is what i did...

$this->spreadsheet->getActiveSheet()
     ->getStyle('D4')
     ->getNumberFormat()
     ->setFormatCode('$ #,##0.00');

But it doesn't work. Any ideas? or am I doing it wrong? Thanks in advance.

like image 845
Brandon Asaph Avatar asked Sep 11 '18 18:09

Brandon Asaph


2 Answers

I was able to do the following with PHPSpreadsheet:

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

The format code for FORMAT_CURRENCY_USD_SIMPLE == '"$"#,##0.00_-'

like image 56
Shawn Northrop Avatar answered Sep 17 '22 12:09

Shawn Northrop


You can use this, if you are working with applyFromArray:

$sheet = $spreadsheet->getActiveSheet();

$sheet->getStyle($thisCol)->applyFromArray(

    'numberFormat' => [
        'formatCode' => \PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_CURRENCY_EUR
    ]
);

Otherwise use it like this:

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

Use FORMAT_CURRENCY_USD for dollar

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 €

Checkout the class \PhpOffice\PhpSpreadsheet\Style\NumberFormat to find out all possible values.

The class is stored in vendor\phpoffice\phpspreadsheet\src\PhpSpreadsheet\Style\NumberFormat.php

like image 41
Black Avatar answered Sep 16 '22 12:09

Black