PHPEXCEL getCalculatedValue oder getFormattedValue gibt schwerwiegender Fehler
Ich habe eine Datei mit dem mime-Typ "application/octet-stream; charset=binary" und die Erweiterung ".xlsx". PHPExcel_IOFactory::identifizieren($this->Datei) gibt 'Excel2007'. Ich erstelle meine Leser wie dieses:
$this->objectReader = PHPExcel_IOFactory::createReaderForFile($this->file);
Wenn ich versuche, um der Wert in einer Zelle mit einer Formel, die ich nur tun können, es auf zwei Arten:
1)$sheet->getCell($columns[$i].$row->getRowIndex())->getValue()
//return the actual formula as a string
2)$sheet->getCell($columns[$i].$row->getRowIndex())->getOldCalculatedValue()
//returns the oldCalculated value which is not always corret (for example the value in the cell is 17.4% and it returns 0.17)
Wenn ich dump die $sheet->getCell($Spalten[$i].$Zeile->getRowIndex()) Objekt die Ausgabe beginnt mit der Stilllegung :
object(PHPExcel_Cell)[142370]
private '_value' => string '=IFERROR(IF(C$6="yes",IF(ISBLANK(INDIRECT(ADDRESS($AN15,MATCH($B$6,INDIRECT("'"&C$7&"'!"&$AN$9-1&":"&$AN$9-1),0),,,C$7),TRUE)),"",INDIRECT(ADDRESS($AN15,MATCH($B$6,INDIRECT("'"&C$7&"'!"&$AN$9-1&":"&$AN$9-1),0),,,C$7),TRUE)),""),"")' (length=231)
private '_calculatedValue' => float 0.1744360902255639
private '_dataType' => string 'f' (length=1)
private '_parent' =>...
Den richtigen Wert da ist, aber ich kann nicht darauf zugreifen...
Wenn ich versuche, den Wert der Zelle mit getFormattedValue() oder mit getCalculatedValue() die Ausgabe ist die Stilllegung fatal error:
Catchable fatal error: Argument 2 passed to PHPExcel_Calculation_LookupRef::INDIRECT() must be an instance of PHPExcel_Cell, boolean given
Jede Idee, wie dieses problem zu lösen ? Ich bin wirklich stecken und keine Ahnung haben. Danke.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einen Anruf zu
zurück, die eigentliche Formel für jede Zelle, die eine Formel enthält,
Den Wert
_calculatedValue
dass Sie sehen können, wenn Sie dump das cell-Objekt ist das eine, Sie abrufen können mit dem AufrufIn diesem Fall, Sie sagen, es ist falsch..... Sie irren sich, es ist richtig:
17.4%
ist0.174
... der Unterschied ist, dass die Anwendung einer%
format Maske zeigt den tatsächlichen Wert der Zelle in MS Excel mit 100 multipliziertBeim Aufruf
oder
PHPExcel Ausführung versucht die Formel für die Zelle und berechnen den Wert. Wenn dies eine Ausnahme zu werfen, können Sie Debuggen die Berechnungs-engine zu sehen, wo es schief läuft, indem die Berechnungs-engine debug-Modus, wie beschrieben in diese gist
getOldCalculatedValue()
erhalten Sie ein Schwimmer kehrte mit einem Wert von0.1744360902255639
..... es ist bis zu Ihnen, wie Sie Sie formatieren, dass der Wert für die Anzeige