DevTrain

Autor: Bernhard Elbl

Word-Dokument aus Vorlage

Word ist etwas schwieriger über ASP zu steuern als Excel. Es gibt keine genaue Zellen- als Bereichszuordnung. Dafür kann man Text-Marken setzen und so direkt zur gewünschten Stelle springen.

Heute will ich ein Beispiel zeigen, wie man aus einer Vorlage ein Word-Dokument am Server mit ASP generieren kann. Dieses wird dann am Server abgespeichert.

1. Erstellen der Vorlage in Word selbst --- Rechnung.Doc

2. Füllen der Vorlage mit Daten über ASP
Verweis zur "Microsoft Word Object Library 9" setzen
Der Meta-Tag kann sich auch in der Global.asa befinden.
<!--METADATA TYPE="TypeLib" NAME="Microsoft Word9.0ObjectLibrary" UUID=  "{00020905-0000-0000-C000-000000000046}" VERSION=    "8.1"--><     /PRE>< /PRE><           /PRE><     /PRE>

wdRechnung.asp
<%@ language=vbscript %>
<%
'--- Füllen der Variablen und dem Array mit Werten. Dies geschieht vorher natürlich mit Daten
'--- aus der Datenbank oder einen HTML-Formualar im Array stehen die Artikel, die bestellt wurden.
KdNr = "12345678"
Name = "Herr Peter Völker"
Strasse = "Oberhausen 8"
Wohnort = "84533 D-Wahldorf"
ReNr = "3456787"
dim arrDaten(2,2)
arrDaten(0, 0) = "Drucker": arrDaten(0, 1) = "100,09": arrDaten(0, 2) = "300,27"
arrDaten(1, 0) = "Toner": arrDaten(1, 1) = "29,99": arrDaten(1, 2) = "290,90"
arrDaten(2, 0) = "Papier": arrDaten(2, 1) = "4,4": arrDaten(2, 2) = "62,5"
Pfad = Server.MapPath("./")
'--- Setzen der Instanz zu Word ( - Laden von Word )
Set oWord = Server.CreateObject("Word.Application")
'--- Hinzufügen eines Dokuments zu Word
Set oDoc = oWord.Documents.Add(Pfad & "Rechnung.doc")
'--- Anspringen der Textmarke "Adresse"
    oDoc.GoTo(wdGoToBookmark, , , "Adresse").Select
With oWord
'--- Jetzt Adress-Daten einfügen
    .Selection.TypeText Name
    .Selection.TypeParagraph
    .Selection.TypeText Strasse
    .Selection.TypeParagraph
    .Selection.TypeParagraph
    .Selection.TypeText Wohnort
'--- Anspringen der Textmarken "RNr" und "KNr" für Rechnungs- und Kundennummer eintragen
    oDoc.GoTo(wdGoToBookmark, , , "RNr").Select
    .Selection.TypeText ReNr
    oDoc.GoTo(wdGoToBookmark, , , "Datum").Select
    .Selection.TypeText CStr(Date)
    oDoc.GoTo(wdGoToBookmark, , , "KNr").Select
    .Selection.TypeText KdNr
' --- Instanz zur Tabelle setzen
Set oT = oDoc.Tables(1)
'--- Zeilen in Abhängigkeit des Arrays setzen. + 2 für Netto und Brutto-Preis
    oT.Rows(2 + i).Select
    oWord.Selection.InsertRowsBelow UBound(arrDaten) + 2
'--- durchlaufen des kompletten Arrays und Füllen der Tabelle. Dabei wird das Netto-Gesamt errechnet
For i = LBound(arrDaten) To UBound(arrDaten)
    oT.Rows(2 + i).Cells(1).Range = i + 1
    oT.Rows(2 + i).Cells(2).Range = arrDaten(i, 0)
    oT.Rows(2 + i).Cells(3).Range = arrDaten(i, 1)
    oT.Rows(2 + i).Cells(4).Range = arrDaten(i, 2)
    Gesamt = Gesamt + CDbl(arrDaten(i, 2))
Next
'--- Eintragen des Nettopreis, MWSt und des Brutto-Preises
    oT.Rows(2 + i).Cells(3).Range = "Netto" & vbCrLf & "MWST"
    oT.Rows(2 + i).Cells(4).Range = Gesamt & vbCrLf & Gesamt * 0.16
    oT.Rows(2 + i + 1).Cells(3).Range = "Brutto"
    oT.Rows(2 + i + 1).Cells(4).Range = Gesamt * 1.16
'--- Letzte Zeile der Tabelle wird "Fett" und "Unterstrichen" zugewiesen
    oT.Rows(2 + i + 1).Select
    .Selection.Font.Bold = wdToggle
    .Selection.Font.Underline = wdUnderlineSingle
'--- Speichern des Docs mit Rechnungsnummer als Dateiname
    oDoc.SaveAs Pfad & "" & RNr & ".doc"
'--- Schliessen des Dokuments
    oDoc.Close False
Set oDoc = Nothing
'--- beenden der Anwendung "Word"
    .Quit
End With
Set oWord = Nothing


Und gibt´s den kompletten Source-Code mit Word-Vorlage zum Download. Viel Spaß!


Erfasst am: 23.06.2001 - Artikel-URL: http://www.devtrain.de/news.aspx?artnr=473
© Copyright 2003 ppedv AG - http://www.ppedv.de