Wordfile mit PHP bearbeiten

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Wordfile mit PHP bearbeiten

    Hallo

    Ich möchte gern ein bestehendes Wordfile mit php öffnen, diverse Platzhalter mit PHP Variablen ersetzen und das doc dann unter einem anderen Namen abspeichern. Das sollte von der Theorie her möglich sein, oder?

    Mit der Praxis tu ich mich allerdings noch etwas schwer. Ich hab hier im Forum folgendes Beispielprog gefunden:

    PHP-Code:
    <?php

    echo("Bitte warten");

    // Word starten
    $word = new COM("word.application") or die("Konnte Word nicht instantiieren");
    print 
    "Word geladen, Version {$word->Version}\n";

    //Fenster anzeigen
    $word->Visible 1;

    //ein leeres Dokument öffnen
    $word->Documents->Add();

    //irgendetwas tun
    $word->Selection->TypeText("Dies ist ein Test...");
    $word->Documents[1]->SaveAs("testtesttest.doc");

    //Word schließen
    $word->Quit();

    //Das Objekt freigeben
    $word->Release();
    $word null;

    ?>
    Als Ausgabe erhalte ich folgendes:

    Bitte wartenWord geladen, Version 9.0
    Fatal error: Uncaught exception 'com_exception' with message 'Error Das aufgerufene Objekt wurde von den Clients getrennt. ' in C:\apachefriends\xampp\htdocs\webtool\word_test.php:23 Stack trace: #0 C:\apachefriends\xampp\htdocs\webtool\word_test.php(23): com->Release() #1 {main} thrown in C:\apachefriends\xampp\htdocs\webtool\word_test.php on line 23

    Was hat es mit dieser Fehlermeldung auf sich?

    Ich habe bereits hier im Forum und im Internet nach Befehlen für die COM Schnittstelle gesucht, bin allerdings nicht wirklich fündig geworden. Hat jemand gute Links oder noch besser Bücher wo das was ich vorhabe gut erklärt wird!? Danke

    Boneman

  • #2
    http://www.php.net/COM schon gesehen?

    Kommentar


    • #3
      Original geschrieben von onemorenerd
      http://www.php.net/COM schon gesehen?
      ja, aber nicht auf Anhieb gefunden wo die Befehle stehen die mit Word zu tun haben und der Link zur Microsoftseite bringt auch nicht die Erleuchtung.

      Jemand eine Idee, was es mit der Fehlermeldung auf sich hat, oder kann ich die ignorieren, da das Dokument ja erzeugt wird!?

      Kommentar


      • #4
        welche zeile genau schmeißt die exception?
        evtl. manuell abfangen:
        http://de.php.net/manual/de/language.exceptions.php

        Kommentar


        • #5
          Zeile 23 ist folgende:
          $word->Release();

          Ich kann ja leider nichtmal etwas mit der Meldung anfangen .

          Kommentar


          • #6
            versuch mal $word->Documents->Close(); vor dem Quit() auszuführen.
            ansonsten, befolge den link, fange die exception ab.

            Kommentar


            • #7
              Bin mir nicht sicher, ob ich das richtig umgesetzt hab, was du wolltest, aber hier mal der Code wie er momentan aussieht

              PHP-Code:
              <?php

              echo("Bitte warten");

              // Word starten
              $word = new COM("word.application") or die("Konnte Word nicht instantiieren");
              print 
              "Word geladen, Version {$word->Version}\n";

              //Fenster anzeigen
              $word->Visible 1;

              //ein leeres Dokument öffnen
              $word->Documents->Add();

              //irgendetwas tun
              $word->Selection->TypeText("Dies ist ein Test...");
              $word->Documents[1]->SaveAs("testtesttest.doc");

              //Word schließen
              $word->Documents->Close();
              $word->Quit();

              //Das Objekt freigeben
              try {
                 
              $word->Release();
              } catch (
              Exception $e) {
                 echo 
              'Caught exception: ',  $e->getMessage(), "\n";
              }

              $word null;

              ?>
              Dann erscheint folgende Meldung:
              Bitte wartenWord geladen, Version 9.0 Caught exception: Error Das aufgerufene Objekt wurde von den Clients getrennt.

              Glaub das ist nicht das was du haben wolltest, aber ich hab noch nie exceptions in php auf diese Weise abgefangen :/

              Kommentar


              • #8
                ist richtig.

                wenn du jetzt nicht herausfindest, was die ausnahme für eine bedeutung hat, ansonsten aber alles in ordnung ist, kannst du den catch-block einfach leer lassen, auch wenn es extrem unsauber ist.

                Kommentar


                • #9
                  hmm, ich hatte vorhin nochmal kurz den exception block drumrum weggelassen und da hat mir der Browser gesagt com::release nicht bekannt oder so ähnlich. Beim nächsten aktualisieren (ohne am Code was geändert zu haben) stand wieder die lange Meldung da, daher kann ich nicht genau sagen wie die Meldung war, aber das com::release stand definitiv da.

                  hmm na mal schaun ob ich noch rausfinde woran das liegt. Allerdings hab ich jetzt erstmal ein etwas größeres Problem. Wenn ich das Skript zu Hause starten will, dann läd der Browser ewig, aber es passiert nix - kein Fortschritt beim Ladebalken, gar nix. Jede andere PHP Seite funktioniert problemlos, nur bei der Seite passiert gar nichts.

                  Konfiguriert ist der Rechner genauso wie der Laptop wo ich es heute den ganzen Tag über erfolgreich getestet habe. Einziger Unterschied besteht darin, daß auf dem Rechner jetzt Office 2003 und auf dem Laptop Office 2000 oder sogar noch älter drauf installiert ist, aber daran sollte es doch eigentlich nicht abhängen.

                  /EDIT
                  Nachdem ich das Testfile auf dem Desktop gestartet hab, hängt sich der Apache auf und zeigt mir anschließend bis zum neustart gar keine Seite mehr an
                  Zuletzt geändert von Boneman; 09.08.2005, 17:57.

                  Kommentar


                  • #10
                    Hab das File eben nochmal auf dem Laptop getestet und folgende Fehlermeldungen direkt hintereinander (nach aktualisieren) bekommen ohne etwas am code geändert zu haben:

                    Fehlermeldung1:
                    Bitte wartenWord geladen, Version 9.0 Caught exception: Error Member nicht gefunden.

                    Fehlermeldung2:
                    Bitte wartenWord geladen, Version 9.0
                    Fatal error: Call to undefined method com::Release() in C:\apachefriends\xampp\htdocs\webtool\word_test.php on line 25


                    Wie kann es sein, daß ich 2 verschiedene Meldungen bekomme? Da stimmt doch etwas nicht!

                    Kommentar


                    • #11
                      es kann sein, dass dir die com-objekte nicht zur verfügung stehen. wird auch auf irgendeine art und weise mit der installation von office zusammenhängen können.

                      warum muss es eigentlich ein doc-dokument sein? es gibt doch rtf und pdf - die lassen sich auch auf unix-servern problemlos erstellen.

                      Kommentar

                      Lädt...
                      X