2013-10-01 15 views
8

PHPExcel nur $ und EUR verwendet:

const FORMAT_CURRENCY_USD_SIMPLE  = '"$"#,##0.00_-'; 
const FORMAT_CURRENCY_USD   = '$#,##0_-'; 
const FORMAT_CURRENCY_EUR_SIMPLE  = '[$EUR ]#,##0.00_-'; 

Was ich brauche, ist andere Währungen zu bekommen (I "zł" für Polnischer Zloty verwenden). Alle Währungen außer $ und EUR sind als 'Allgemein' gekennzeichnet.

Folgefrage zu SWilks Antwort: Wie verwende ich das benutzerdefinierte Format? Ich habe neue Konstanten in NumberFormat.php:

const FORMAT_CURRENCY_PLN_1 = '_-* #,##0.00\ [$zł-415]_-'; 
const FORMAT_CURRENCY_PLN_2 = '\-* #,##0.00\ [$zł-415]_-'; 
const FORMAT_CURRENCY_PLN_3 = '_-* "-&quot'; 
const FORMAT_CURRENCY_PLN_4 = '??\ [$zł-415]_-;[email protected]_-'; 

ist es ok? Was muss ich tun Formate lesen

$objPHPExcel->getCellXfByIndex($cell->getXfIndex())->getNumberFormat()->getFormatCode(); 

Antwort

3

ich mit einer einfachen Excel mit einer Zelle Datei als Währung Zelle in PLN denominierte formatiert gespeichert haben. Entpacke das .xlsx und überprüfte das Format. Es ist:

_-* #,##0.00\ [$zł-415]_-;\-* #,##0.00\ [$zł-415]_-;_-* "-"??\ [$zł-415]_-;[email protected]_- 

Versuchen Sie dieses Format verwenden oder Ihr eigenes Schreiben basierend auf dieser.

+0

Danke. Aber ich weiß nicht, wie ich es benutzen soll. Ich habe neue CONSTants in NumberFormat.php: – Marek

6

Standard-Konstanten sind nur für Dollar und Euro definiert, PHPExcel beschränkt Sie jedoch nicht nur auf diese konstanten Werte. Sie sind einfach Saiten; und Sie können jeden gültigen MS Excel-Formatcode als die numberFormat-Maske festlegen, indem Sie ihn einfach auf den entsprechenden Zeichenfolgenwert setzen. Es ist im Allgemeinen keine gute Idee, numberFormat.php Ihre eigenen neuen Konstanten hinzuzufügen, da Sie daran denken müssen, sie bei jedem Upgrade auf eine neue Version von PHPExcel hinzuzufügen ... es ist besser, zusätzliche Konstanten in Ihrem zu definieren eigener Code.

Sie können ein Währungsformat auf Zellen anwenden mit:

$objPHPExcel->getActiveSheet() 
    ->getStyle('E4:E13') 
    ->getNumberFormat() 
    ->setFormatCode(
     '_-* #,##0.00\ [$zł-415]_-' 
    ); 

Oder, wenn Sie eine neue Konstante des eigenen definieren mit

define('FORMAT_CURRENCY_PLN_1', '_-* #,##0.00\ [$zł-415]_-'); 

dann können Sie es an Ihre Zellen anwenden

mit
$objPHPExcel->getActiveSheet() 
    ->getStyle('E4:E13') 
    ->getNumberFormat() 
    ->setFormatCode(
     FORMAT_CURRENCY_PLN_1 
    ); 
+0

Vielen Dank! Aber ich mussFormatCode bekommen, nicht gesetzt. Ich habe solche Einstellung in Excel-Datei und ich muss Währungszusatz in allen Zellen mit FORMAT_CURRENCY_PLN_1 setzen. – Marek

+0

Wenn Sie eine Währungsformatmaske lesen, die Złote aus einer Datei enthält, die Sie geladen haben, dann sollten Sie dies sehen ... es sei denn, Sie haben die Datei mit readDataOnly auf true gesetzt. –

+0

Ok, ich überprüfe es. Danke nochmal. – Marek

1

für UK Pfund (Sterling) phpExcel

ich den richtigen Wert herausgefunden, indem sie ein xlsx mit einer Zelle unzipping als Währung £ formatiert (oder einer Zelle mit einem £ in ihm eingegeben: schien die gleiche Formatierung zu sein)