tikal Geschrieben 22. April 2009 Teilen Geschrieben 22. April 2009 Gute Morgen wünsch ich euch! Ich habe ein Problem und zwar würde ich gerne gewissen Zeilen (immer nur eine Zeile a 3 Spalten also jeweils 3 Felder pro Dokument) aus Excel Mappen auslesen lassen und als CSV exportieren. Das soll natürlich automatisch (einmal täglich) passieren und anschließend möchte ich die Informationen in eine MYSQL Datenbank einlesen mithilfe von LOAD DATA LOCAL INFILE..... Mein Problem ist jetzt wie ich das am besten umwandeln lassen kann, bzw wie ich es hinbekomme das nur ein bestimmter bereich exportiert wird (geht das überhaupt?). In allen Dateien stehen die Informationen die ich brauche an der gleichen Stelle. Und welche Form sollte die CSV Datei haben damit man sie optimal einlesen kann? Danke für eure Hilfe im vorraus! Gruß Tikal Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
robotto7831a Geschrieben 22. April 2009 Teilen Geschrieben 22. April 2009 Hallo, meines Wissens speichert Excel immer die komplette Datei. Also muss mittels VBA oder so eine neue Datei erstellt werden, aus der alten die Bereiche markieren und in der neuen einfügen und anschließend die neue als CSV Datei speichern. Vielleicht ist das eine Alternative. t-error.ch - Excel Dateien mit dem PHP-ExcelReader lesen SourceForge.net: PHP-ExcelReader: Files Frank Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
tikal Geschrieben 22. April 2009 Autor Teilen Geschrieben 22. April 2009 Hey vielen Dank für die schnelle Antwort! Ja mit dem Php Reader hab ich es schon versucht. Allerdings weiß ich nicht wie ich mir damit spezielle Zellen ausgeben lassen kann (standardmäßig zeigt der ja nur größe und Spaltenüberschriten an). Oder kennst du eine möglichkeit wie man eine Excel-Mappe dazu bringt sich automatisch zu öffnen die Verknüpfungen zu aktualisieren und sich wieder zu schließen?! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
robotto7831a Geschrieben 22. April 2009 Teilen Geschrieben 22. April 2009 Also laut dem Beispiel kann man mit $celldata[zeile][spalte] durch die Daten gehen. $celldata=$sheet['cells']; $headrow=1; for($x=1;$x<=$cols;$x++) { echo $celldata[$headrow][$x]." : "; } [/php] Frank Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
tikal Geschrieben 22. April 2009 Autor Teilen Geschrieben 22. April 2009 Mhh aber wenn ich dann zb. echo "$celldata[2][2]" sage, gibt er mir aus Array[2] anstatt der wert aus der Zelle. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
robotto7831a Geschrieben 22. April 2009 Teilen Geschrieben 22. April 2009 Also bei mir steht in der Exceltabelle "1","2","3","4","5","6", "7","8","9","10","11","12", und mit echo $data->sheets[0]['cells'][2][4]; [/php] erhalte ich als Ausgabe 10. Ich habe übrigens die example.php aus der Zipdatei genommen. Frank Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
tikal Geschrieben 22. April 2009 Autor Teilen Geschrieben 22. April 2009 Mhh. Die Exaplmes habe ich beide nicht ans laufen bekommen. Da kommt bei mir immer ein Speicherfehler (also das der gesetzte Speicher überschritten wurde) und auch eine Erhöhung mit ini_set("memory_limit","10M"); oder höher hat nicht geholfen. Meine eigene Datei funktioniert aber und zeigt zb an: Arbeitsblatt 1: Tabelle1 hat: 2 Zeilen und 4 Spalten. Spaltenueberschriften: 1 : 2 : 3 : 4 : Arbeitsblatt 2: Tabelle2 hat: 0 Zeilen und 0 Spalten. Spaltenueberschriften: Arbeitsblatt 3: Tabelle3 hat: 0 Zeilen und 0 Spalten. Hierbei habe ich eine ähnliche Datei wie du genommen! Also 1 2 .... Wenn ich es mit echo "($data->sheets[0]['cells'][2][1])"; mache kommt als ausgabe: [0]['cells'][2][1] Hast du eine Idee? Ich steh nämlich irgendwie auf dem Schlauch :confused: Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
robotto7831a Geschrieben 22. April 2009 Teilen Geschrieben 22. April 2009 Gib das mal nicht als String aus. Frank Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
tikal Geschrieben 22. April 2009 Autor Teilen Geschrieben 22. April 2009 Nichts wird ausgegeben.... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
robotto7831a Geschrieben 22. April 2009 Teilen Geschrieben 22. April 2009 Fang doch mal vorne an. echo $data->sheets[0]['cells'][1][1]; [/php] Frank Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
tikal Geschrieben 22. April 2009 Autor Teilen Geschrieben 22. April 2009 Schon probiert, keine Ausgabe. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
robotto7831a Geschrieben 22. April 2009 Teilen Geschrieben 22. April 2009 Probier das ganze mal mit nur einem gefüllten Arbeitsblatt wo in A1 irgendwas steht. Frank Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
tikal Geschrieben 22. April 2009 Autor Teilen Geschrieben 22. April 2009 Keine Ausgabe... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
robotto7831a Geschrieben 22. April 2009 Teilen Geschrieben 22. April 2009 Poste doch mal den kompletten Code. Frank Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
tikal Geschrieben 23. April 2009 Autor Teilen Geschrieben 23. April 2009 echo "<hr>"; ini_set('memory_limit', '10M'); // Excel Reader einbinden require_once("excel/reader.php"); // Objekt erstellen, Encoding definieren $xls=new Spreadsheet_Excel_Reader(); $xls->setOutputEncoding("CP12522"); // Die Datei daten.xls oeffnen $xls->read("test.xls"); // durch die Worksheets gehen $counter=0; foreach($xls->boundsheets AS $worksheet ) { $sheet=$xls->sheets[$counter]; // worksheet ist der Zeiger in die Info der Tabelle // sheet ist der Zeiger in die Daten der Tabelle $cols=$sheet['numCols']; $rows=$sheet['numRows']; echo "<b>Arbeitsblatt ".($counter+1).": ".$worksheet['name']."</b><br />"; echo "hat: ".$rows." Zeilen und ".$cols." Spalten."; // Schleife ueber die Daten der Zeile 1 (bzw. 0 $celldata=$sheet['cells']; $headrow=1; echo "<br /><br /><b>Spaltenueberschriften:</b><br />"; for($x=1;$x<=$cols;$x++) { echo $celldata[$headrow][$x]." : "; } $counter++; } echo "<br /><br />"; //Einzelne Zellen direkt ansprechen: echo $data->sheets[0]['cells'][1][1]; echo "<form method=\"post\" action=\"" . SCRIPT_NAME . "\">"; echo "</form>"; echo "<input type=\"button\" value=\"Zurück\" onClick=\"history.back()\"><br />";[/PHP] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
robotto7831a Geschrieben 23. April 2009 Teilen Geschrieben 23. April 2009 Das Skript läuft doch super. Eine kleine Änderung. Die Zeile echo $data->sheets[0]['cells'][1][1]; [/php] durch [php] echo $xls->sheets[0]['cells'][1][1]; ersetzen. Frank Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
tikal Geschrieben 24. April 2009 Autor Teilen Geschrieben 24. April 2009 Oh Gott... Aber manchmal sieht man eben den Wald vor lauter Bäumen nicht mehr! Danke für deine Hilfe! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
tikal Geschrieben 24. April 2009 Autor Teilen Geschrieben 24. April 2009 Ich habe eine Excel Tabelle der Form Überschrift Überschrift Überschrift String String Double-Wert String String Double-Wert Jetzt laufe ich mit 2 For Schleifen durch das Dokument um es wie es in der .xls ist auch auf der PHP Seite auszugeben. Allerdings gibt er mir nur die Überschriften (die ja auch String sind, also muss es die Möglichkeit generell geben) und die Werte zurück. Der Rest bleibt leer. Weißt du wie man sich alles anzeigen kann? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
robotto7831a Geschrieben 24. April 2009 Teilen Geschrieben 24. April 2009 Du läufst ja mit deinem $headrow auch nur über Zeile 1. Die anderen Zeilen sind dir im Skript vollkommen egal. Frank Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
tikal Geschrieben 24. April 2009 Autor Teilen Geschrieben 24. April 2009 Die anderen Zeilen ließt er aber! So lange es sich um Zahlen handelt, nur Zeichen ließt er nicht sondern lässt die Felder leer. Mit Headrom =2 würde er anzeigen Leer Leer 5,76 Als Beispiel. Nur das Leer eben tatsächlich leer ist. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
robotto7831a Geschrieben 24. April 2009 Teilen Geschrieben 24. April 2009 Wo läuft er denn bitte schön hier über die zweite Zeile? $headrow=1; echo "<br /><br /><b>Spaltenueberschriften:</b><br />"; for($x=1;$x<=$cols;$x++) { echo $celldata[$headrow][$x]." : "; } [/php] Frank Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
tikal Geschrieben 27. April 2009 Autor Teilen Geschrieben 27. April 2009 for ($y=1;$y<=$rows;$y++) { echo "<tr>"; for ($z=1;$z<=$cols;$z++) { echo "<td>"; echo $xls->sheets[0]['cells'][$y][$z]; echo "</td>"; } echo "</tr>"; }[/PHP] Oben nicht, aber hier! Und dabei gibt er nur die Überschriften und die Zahlenwerte aus, der Rest bleibt leer! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
robotto7831a Geschrieben 27. April 2009 Teilen Geschrieben 27. April 2009 Was soll er denn noch ausgeben? Mach doch mal einen Screenshot. Frank Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
tikal Geschrieben 27. April 2009 Autor Teilen Geschrieben 27. April 2009 So sieht die Ausgabe aus: Die Tabelle in .xls Format sieht so aus: Ampelname Ampelstatus Ampelwert Ampel 1 gruen 9 Ampel 2 gruen 7,25 Ampel 3 gelb 6,5 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
tikal Geschrieben 27. April 2009 Autor Teilen Geschrieben 27. April 2009 Mir ist aufgefallen: Wenn ich foreach($xls->boundsheets AS $worksheet ) { $sheet=$xls->sheets[$counter]; // worksheet ist der Zeiger in die Info der Tabelle // sheet ist der Zeiger in die Daten der Tabelle $cols=$sheet['numCols']; $rows=$sheet['numRows']; echo "<b>Arbeitsblatt ".($counter+1).": ".$worksheet['name']."</b><br />"; echo "hat: ".$rows." Zeilen und ".$cols." Spalten."; // Schleife ueber die Daten der Zeile 1 (bzw. 0 $celldata=$sheet['cells']; $headrow=2; echo "<br /><br /><b>Spaltenueberschriften:</b><br />"; for($x=1;$x<=$cols;$x++) { echo $celldata[$headrow][$x]." : "; } $counter++; }[/PHP] hier Headrom=2 setze werden auch keine Strings angezeigt sondern einfach nichts. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.