Zellformate in phpexcel
ich versuche zu Lesen, die excel-Dateien mit phpexcel, das funktioniert soweit ok. phpexcel ist ein wenig zu klug, aber, und entfernt führende Nullen von meiner Zellen. ich glaube, ich muss es sagen, zur Behandlung der Zelle als Zeichenfolge, nicht als general-oder Anzahl. aber ich habe versagt. ich fand sogar threads auf stackoverflow, aber die vorgeschlagenen Lösungen einfach nicht funktionieren würde.
unten ist ein Ausschnitt der Sachen, die ich arbeite.
foreach(@$objWorksheet->getRowIterator() as $row){
$cellIterator = $row->getCellIterator();
$cellIterator->setIterateOnlyExistingCells(false);
foreach($cellIterator as $cell){
#$objWorksheet->getStyle($cell->getCoordinate())->getNumberFormat()->setFormatCode('@');
$cells[] = $cell->getValue();
}
}
irgendeine Idee? ich will nicht beschränke mich nur für das Lesen von numerischen Inhalt, da ich keine Kontrolle darüber, was die Nutzer hochladen. die Behandlung alles als strings würden perfekt sein.
/peder
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die getValue () - Methode genau das tut, was es tun sollte, ohne versucht, clever zu sein. Es gibt die eigentlichen gespeicherten Wert in der Zelle. Wenn die Zelle enthält eine ganze Zahl, es gibt eine Ganzzahl zurück; wenn die Zelle enthält einen Schwimmer, es gibt einen float; wenn es eine Zeichenfolge enthält, gibt es einen string zurück. Wird klug zurück, dass Wert als formatierten string (mit führenden Nullen, wenn nötig), dann müssen Sie verwenden eine ganz andere Methode, und wenden Sie die Formatierung der Zellen auf den zurückgegebenen Wert.
oder wenn die Zelle eine Formel enthält:
Bitte nicht verwenden Sie @, um zu versuchen und zu unterdrücken Fehler. PHPExcel exceptions wirft, und Sie sollten wirklich wollen, um diese Falle.
Jedoch, für das, was Sie tun, könnten Sie das Arbeitsblatt die toArray() Methode wird ein array zurückgeben, der alle Werte von Zellen im Arbeitsblatt.
Es ist etwas leichter als die Iteratoren. Für tun foreach-Sie können auch toArray-Methode, im Beispiel:
Funktionierte gut für mich und scheint auch schneller zu sein, dann Iteratoren, genau wie Mark Baker traurig.
In der Verarbeitung CVS sehe ich ein Hauptproblem: die Nutzer haben, um Daten zu exportieren Excel-Formular und dieser Prozess kann verwirrend sein, für die meisten von Ihnen. Deshalb suchte ich nach der Lösung für den import direkt aus Excel.
In der Benutzung dieser Iteratoren ist etwas seltsam für mich und ich wusste wirklich nicht viel. Während der Zugriff auf Daten mit Iteratoren es gibt einige (form 2 und 4 in meinem Fall) serialisierte Objekte und abrufen von Daten aus Ihnen wurde zum Albtraum.
keine der Lösungen hat bei mir (CSV-import mit PHPExcel v1.7.5)
ich löste durch den eingestellten Wert der binder so:
bevor
PHPExcel_IOFactory::createReader('CSV')