Verwenden von Worddokumenten über ASP und automatisches erstellen und darstellen von Word-Dokumenten im Intranet/Internet.
Aufgabe ist es, einen benutzerdefinierten Ausdruck zu erzeugen der auf jeder Seite eine Überschrift enthält sowie x Kriterien. In HTML ist diese Aufgabe nur schwierig oder gar nicht lösbar. In Word wäre diese Aufgabenstellung aber relativ einfach zu programmieren. Daher bietet es sich an, Word in ASP zu instantiieren und Werte zu übergeben. Dieses Beispiel geht einen Schritt weiter und arbeitet mit einem Template, daß Sie beliebig gestalten können. Innerhab dieses Templates können Sie Formatierungen und Textmarken nach belieben festlegen.
Nach der Instantiierung des Word.Application Objekts wird das Template geladen und die Werte übergeben.
Hier die Schritte im einzelnen:
Instanziieren von Microsoft Word Set Application("MyDoc") = Server.CreateObject("Word.Application") |
Laden einer Dokumentvorlage .dot Application("MyDoc").Documents.Add (Server.MapPath("word.dot")) |
Füllen der Textmarke Ueberschrift set Ueberschrift = Application("MyDoc").ActiveDocument.Bookmarks("Ueberschrift").Range Ueberschrift.InsertAfter "Das ist die Überschrift" |
Füllen der Textmarke Kriterien set Kriterien = Application("MyDoc").ActiveDocument.Bookmarks("Kriterien").Range Kriterien.InsertAfter "Suche1: Wert1" & chr(10) Kriterien.InsertAfter "Suche2: Wert2" & chr(10) Kriterien.InsertAfter "Suche3: Wert6" |
Werte der Textmarke Kriterien Dynamisch füllen set Daten = Application("MyDoc").ActiveDocument.Bookmarks("Daten").Range For i = 1 to 100 Daten.InsertAfter "Wert: " & i & vbtab & "Ergebnis: " & i * 10 & chr(10) next |
Dokument Speichern Application("MyDoc").ActiveDocument.SaveAs server.MapPath("word.doc") Application("MyDoc").ActiveDocument.Close |
Objekt - Applicationvariable zerstören geht leider nicht da es sich um einen assyncronen Prozess handelt. set Application("MyDoc")=nothing zerstört daher nicht die Instanz von Word. Hierzu verwenden Sie den Befehl
Application("MyDoc").Quit |
Rufen Sie nun die Seite word.doc auf: <SCRIPT LANGUAGE=javascript> <!-- window.location.href=("word.doc"); //--> SCRIPT> <a href="word.doc">Bitte warten Sie einen Moment...<br>Oder klicken Sie hier wenn Sie keine Rückmeldung erhalten.</a> |
Die letzten beiden Codeblöcke dienen dazu, das Word Dokument in den Browser zu laden.
Probleme: Sie müssen die Office Installation (97 oder 2000) erfolgreich abgeschlossen haben. Evtl. kommt es vor, daß im Taskmanager der Windows-Installer gestartet wird, aber nicht angezeigt wird. Legen Sie in diesem Falle Ihre Office CD ins Laufwerk, dann werden die fehlenden Komponenten nachinstalliert.
Dessweiteren müssen Sie über entsprechende Rechte verfügen. Nehmen Sie daher die annonyme Anmeldung auf der ASP Seite heraus oder konfigurieren Sie Ihren IIS so, daß der IUSER zugriffsrechte hat.
Ein weiteres Problem könnte sein, daß Sie Ihr Web in einem eigenem Prozess ausführen, dann können Sie auf das Word-COM Objekt nicht richtig zugreifen. Sie erhalten dann eine Meldung --> Makrospeicher kann nicht geöffnet werden.
Im Beispiel erhalten Sie den kompletten Sourcecode sowie das Template, daß einige Musterdaten im Worddokument darstellt.