Jens: Excel in MySQL mit PHP

Hallo!

Ich habe ein Problem. Ich muss eine Exceltabelle regelmässig (alle 2 Stunden) in eine MySQL-Datenbank einlesen. Leider kann ich die Daten auch nur als Excel-Datei bekommen.

Ist also nix mit Konvertieren in CSV oder so...

Ich habe bisher nur ein PHP-Script gefunden, was Excel parst, aber das kostet 99 Dollar. Muss ja nicht sein...

Und eine andere Lösung basiert auf den COM-Funktionen von PHP...läuft aber nur unter Windows. Wir haben aber ein LAMP.

Weisst jemand eine Lösung, wie ich die Daten auslesen kann? Evtl. ein Script oder so parat??

Wäre über jeden Tipp dankbar!

Jens

  1. Hallo»» Hallo!

    Ich habe ein Problem. Ich muss eine Exceltabelle regelmässig (alle 2 Stunden) in eine MySQL-Datenbank einlesen. Leider kann ich die Daten auch nur als Excel-Datei bekommen.

    Ist also nix mit Konvertieren in CSV oder so...

    Excel kann problemlos als CSV abspeichern:
    Excel->Datei->Speichern unter->
    Dateityp CSV (Trennzeichen getrennt, CSV) auswählen

    solltest Du auch mit einem VBA-Makro automatisieren können

    Gruss,

    Vinzenz

    1. Hallo

      Ich habe ein Problem. Ich muss eine Exceltabelle regelmässig (alle 2 Stunden) in eine MySQL-Datenbank einlesen. Leider kann ich die Daten auch nur als Excel-Datei bekommen.

      Excel kann problemlos als CSV abspeichern:
      Excel->Datei->Speichern unter->
      Dateityp CSV (Trennzeichen getrennt, CSV) auswählen

      solltest Du auch mit einem VBA-Makro automatisieren können

      Im Prinzip hast Du da recht, ich würde sowas auch mittels VBA-Makro lösen, das einzige Problem, was ich für Jens noch sehe, ist die Tatsache, daß das ganze über einen Scheduler laufen muß. Hier gibt es in meinen Augen zwei Optionen:

      1.) Er hat einen Windows-Application-Server zur Verfügung, auf der ein Scheduler läuft, dem er denn noch mitteilt ein Mastermakro-Workbook (sein Ursprungsheet sollte aus taktischen Gründen Makro-Frei bleiben) zu starten, welches seine Datei öffnet und als CSV an eine andere Stelle speichert (und dann ggf. per command-line-ftp in das endgültige Zielverzeichnis speichert), von wo ein Server-Job das File greift und nach MySQL einliest.

      2.) Er startet auf einem Win??-PC lokal ein Excel mit einem Master-Workbook, welches das gleiche tut und emuliert zwei Stunden lang wartet (do while (Zeit nicht abgelaufen):loop).

      Ich persönlich tendiere mehr zur Lösung Nummer 1, da die Maschinen-Last hier definitiv geringer ist und gleichzeitig ein Server mit einer geringeren Wahrscheinlichkeit elektrisch abgeschossen wird. Für die Lösung 1 muß aber definitiv mit dem Admin zusammen ein Weg gefunden werden, während Lösung 2 lokal läuft und den Server-Admin nur äußerst peripher tangiert.

      Bis denndann

      Michael N.

      1. Hallo Michael

        2.) Er startet auf einem Win??-PC lokal ein Excel mit einem Master-Workbook, welches das gleiche tut und emuliert zwei Stunden lang wartet (do while (Zeit nicht abgelaufen):loop).

        Ich persönlich tendiere mehr zur Lösung Nummer 1, da die Maschinen-Last hier definitiv geringer ist und gleichzeitig ein Server mit einer geringeren Wahrscheinlichkeit elektrisch abgeschossen wird. Für die Lösung 1 muß aber definitiv mit dem Admin zusammen ein Weg gefunden werden, während Lösung 2 lokal läuft und den Server-Admin nur äußerst peripher tangiert.

        Einverstanden.

        Ich glaube, Lösung 2 könnte sogar mit dem Windows-Taskplaner und einem VB-Skript ;-( machbar sein. Über die Zuverlässigkeit einer solchen Lösung sollte man sich aber besser keine Illusionen machen ;-)

        Gruss,

        Vinzenz

        1. Hey!

          Danke für eure Hilfe! Die ganze Sache hat nur ein Problem: Wir haben einen Linux-Rechner mit Apache und PHP... sollte also irgend ein Script sein, was unter PHP läuft. Und da ist das Problem.
          Ich finde hunderte Scripte, die Excel-Tabelle erzeugen können, aber keins (bzw. eins für 100 Dollar), was Excel-Daten liest.
          Und die Geschichte mit CSV ist mir schon klar, aber ich hab zum einen kein Excel auf dem Server und zum anderen keine Automatisierung, um es unter Linux zu konvertieren...

          Viele Grüße!

          Jens

          1. Hallo Jens,

            Danke für eure Hilfe! Die ganze Sache hat nur ein Problem: Wir haben einen Linux-Rechner mit Apache und PHP... sollte also irgend ein Script sein, was unter PHP läuft. Und da ist das Problem.
            Ich finde hunderte Scripte, die Excel-Tabelle erzeugen können, aber keins (bzw. eins für 100 Dollar), was Excel-Daten liest.
            Und die Geschichte mit CSV ist mir schon klar, aber ich hab zum einen kein Excel auf dem Server und zum anderen keine Automatisierung, um es unter Linux zu konvertieren...

            Hast Du denn irgendwo im Netzwerk einen Win-PC mit M$-Office, der unter Deiner Kontrolle ist?
            Wenn ja, dann mach das ganze von dort. Saug Dir mittels Makro und FTP (Kannst Du auch aus VBA anstoßen) das File als Binary, öffne es, konvertier es auf dem Win-PC nach CSV und schieb das dann via FTP als Text rüber auf den UX-Rechner.

            Dein Win-PC-Teil besteht dann aus einem Excel-VBA-Loader-Workbook, zwei Dos-Batch-Files (eins zum saugen und eins zum schieben) und zwei FTP-Batch-Files (eins zum saugen und eins zum schieben), welche als Input für ihr jeweiliges FTP dienen.

            Schau Dir in VBA dann einfach mal die Funktion Shell an, falls Dich diese Lösung interessiert.

            Der Vorteil bei einer VBA-basierten Lösung ist auch, daß Du (bei geschicktem Kodieren) unabhängig von Excel-Versionen bist, falls M$ mal wieder sein Dateiformat ändert und Euer SysOps M$-Office upgradet. Ansonsten mußt das PHP-Script ja jedem M$-Office-Wechsel angepaßt werden.

            Bis denndann

            Michael N.

          2. Hallo Jens,

            Danke für eure Hilfe! Die ganze Sache hat nur ein Problem: Wir haben einen Linux-Rechner mit Apache und PHP... sollte also irgend ein Script sein, was unter PHP läuft. Und da ist das Problem.

            Bitte. Ich hab' etwas gegoogelt:
            Und was gefunden, was unter GPL steht:

            http://www.ice.ru/~vitus/catdoc/

            Sollte dir helfen.

            Gruss,

            Vinzenz