ich folgende Excel Datei haben:Wie berechnete Werte automatisch mit PHPExcel eingelesen werden?
ich es in durch Looping über jede Zelle und bekommen den Wert mit getCell(...)->getValue()
lesen:
$highestColumnAsLetters = $this->objPHPExcel->setActiveSheetIndex(0)->getHighestColumn(); //e.g. 'AK'
$highestRowNumber = $this->objPHPExcel->setActiveSheetIndex(0)->getHighestRow();
$highestColumnAsLetters++;
for ($row = 1; $row < $highestRowNumber + 1; $row++) {
$dataset = array();
for ($columnAsLetters = 'A'; $columnAsLetters != $highestColumnAsLetters; $columnAsLetters++) {
$dataset[] = $this->objPHPExcel->setActiveSheetIndex(0)->getCell($columnAsLetters.$row)->getValue();
if ($row == 1)
{
$this->column_names[] = $columnAsLetters;
}
}
$this->datasets[] = $dataset;
}
Doch obwohl es liest in den Daten fein, liest es in den Berechnungen wörtlich:
Ich verstehe von Diskussionen like this one, die ich getCalculatedValue()
für berechnete Zellen verwenden können.
Das Problem ist, dass in den Excel-Blättern, die ich importiere, ich vorher nicht weiß, welche Zellen berechnet werden und welche nicht.
Gibt es eine Möglichkeit für mich, den Wert einer Zelle in einer Weise einzulesen, die automatisch den Wert erhält, wenn sie einen einfachen Wert hat und das Ergebnis der Berechnung erhält, wenn es sich um eine Berechnung handelt?
Antwort:
Es stellt sich heraus, dass getCalculatedValue()
Werke für alle Zellen, macht mich fragen, warum dies nicht der Standard für getValue()
da ich denke, würde man würde in der Regel den Wert der Berechnungen anstelle der Gleichungen wollen sich in jedem Fall das funktioniert:
...->getCell($columnAsLetters.$row)->getCalculatedValue();
Ein Problem bei der Verwendung von 'getCalculatedValue()' könnte die automatische Konvertierung von numerischen Werten mit führenden Nullen sein. Z.B. '0600' wird zu '600' berechnet, während Sie auf PHP/Datenbank die Zeichenfolge '0600' benötigen. Deshalb benutze ich 'getValue()', um zuerst den Inhalt einer Zelle zu holen, und dann Gleichungen mit Hilfe eines führenden '=' zu identifizieren, um ihren berechneten Wert mit 'getCalculatedValue()' zu holen. – proximus
'PHPExcel' wurde nun von' PhpSpreadsheet' ersetzt – Dennis