Avatar billede jytte Nybegynder
27. maj 2002 - 10:04 Der er 9 kommentarer og
1 løsning

Oprette Word dokument fra ASP med data fra database

Er det muligt vha ASP databaseudtræk at indsætte værdier i et worddokument?

Jeg regner med at skabelonen til worddokumnentet skal ligge lokalt på brugerens maskine.
Avatar billede benson Nybegynder
27. maj 2002 - 10:10 #1
Nej den kan ikke ligge lokalt på brugerens maskine.
Opret skabelonen på serveren, omdøb den til .asp og indsæt følgende i starten af dokumentet.

<%

Response.ContentType = "application/ms-word"
Response.Addheader "Content-Disposition", "attatchment; filename=fax.doc"
%>

fax.doc ændres til det du døbte filen i starten !
Avatar billede benson Nybegynder
27. maj 2002 - 10:13 #2
Du kan nu finde de forskellige steder i dokumenter hvor der skal indsættes data fra databasen og erstatte indholdet med <%=rs("felt")%>.

Du skal dog være opmærksom på at du skal indsætte lige så mange karakterer som der var i det oprindelige dokument.

Dvs. hvis du har en linie til adresse, og den i WORD består af 60 tegn inklusiv mellemrum, ja så skal det du indsætter i ASP også være 60 karakterer langt.

Jeg bruger det til en fax-forside på intranettet !
Avatar billede krogstrup Nybegynder
27. maj 2002 - 10:39 #3
benson >>>

Finder emnet ret interessant - kan du ikke uddybe (med lidt mere kode) hvordan selve inpodningen af data fra f.eks. en access database foregår ?
Avatar billede benson Nybegynder
27. maj 2002 - 10:50 #4
Hmmm.. ! Jo det....

Følgende er klippet fra toppen af mit fax.asp dokument.


--------------------klip start ----------------
<%
Function Fix(tempString, tal)
    While LEn(tempstring)<tal
        tempString = tempstring & " "
    Wend
    fix=tempstring
End Function


If request.servervariables("Query_string")<>"" Then
       
        ref=request("refID")
        refpers=request("refPers")

        set objconn=Server.CreateObject("ADODB.connection")
        StrConnection ="DSN=databasedsn;Database=database;UID=database;PWD=database"
        objconn.open strConnection
        set objRS=server.CreateObject("ADODB.Recordset")
        set objRS.ActiveConnection=objconn
        If ref<>0 Then
            tempSQL="SELECT * from firmadb WHERE (firmaID=" & ref & ")"

            objRS.Open tempSQL
            f3=fix(objRS("firmanavn"),60)
            f4=fix(objRS("adresse"),60)
            f5=fix(objRS("postnr"),60)
            f6=fix(objRS("adrby"),60)
            f7=fix(objRS("adrland"),60)
            f8=fix(objRS("tlf"),60)
            f9=fix(objRS("fax"),60)
            f10=fix(objRS("femail"),60)
            f11=fix(objRS("web"),60)
            f12=fix("",60)
            objRS.Close       
        Else
            f3=""
        End if
        IF refpers<>"" Then
            tempSQL="SELECT * from person WHERE (personID=" & refpers & ")"

            objRS.Open tempSQL
            if objRS("pfax")<>"pfax" Then
                f9=fix(objRS("pfax"),60)
            End if
            f12=fix(objRS("navn"),60)

            objconn.close
        End if
        set objRS=nothing
        set objconn=nothing
        faxdate=fix(now(),60)
End if

f20=Request.cookies("database")("ini")
f21=Request.cookies("database")("navn")
f22=Request.cookies("database")("ini") & "@mit.dk"
f21=fix(f21,60)
f22=fix(f22,60)
f23=Request.cookies("oplysning")("afdeling")
f23=fix(f23,30)
f24=Request.cookies("oplysning")("adresse")
f24=fix(f24,30)
f25=Request.cookies("oplysning")("postby")
f25=fix(f25,27)
f26=Request.cookies("oplysning")("tlf")
f26=fix(f26,25)
f27=Request.cookies("oplysning")("fax")
f27=fix(f27,26)
f30=fix(FormatDateTime(Date,1),60)

Response.ContentType = "application/ms-word"
Response.Addheader "Content-Disposition", "attatchment; filename=fax.doc"


%>

-----Her er der masse WORD kode som ikke kan klippe klistres ----------


<%=f23%>


MITFIRMA A/S                           

<%=f24%>
DK-<%=f25%>
Tlf. <%=f26%>
Fax <%=f27%>
www.mit.dkTELEFAX Til:<%=f3%>Att:<%=f12%>Faxnr: <%=f9%>                                                                Dato:<%=f30%>Sider:Antal sider                                                Fra:<%=f21%>Emne :Emne-                                                      E-mail:<%=f22%>
Meddelelse



Med venlig hilsen
MITFIRMA A/S                      .



<%=f21%>


--------------------klip slut ----------------

Som i kan se gemmer jeg hvert felt fra databasen i en ny variabel, der bliver tilpasset i længde, så den svare til den samme længde linjen havde i WORD !

Desuden henter jeg de personlige oplysninger fra brugerens egen cookie, med afdeling m.m.
Avatar billede jytte Nybegynder
27. maj 2002 - 23:22 #5
benson:

jeg kan ikke rigtigt få det til at virke. Jeg kan godt få indsat noget tekst på siden men siden vises ikke som et normalt worddokumnet idet der stadig er mange mærkelige tegn.

Du skriver
"Du skal dog være opmærksom på at du skal indsætte lige så mange karakterer som der var i det oprindelige dokument."

Jeg har en mistanke om at min editor (editplus) måske laver om på linieskift og sjove tegn --- hvilken editor benytter du ?

Iøvrigt kan du vel risikere at der i de mærkelige wordtegn forekommer tegnsekvensen "<%" som i asp jo har en betydning. I sådanne tilfælde må du vel erstatte "<%" med "<<%="%"%>".
Avatar billede benson Nybegynder
28. maj 2002 - 08:06 #6
jytte > Jeg bruger editplus som editor. Og så længe jeg kun fjerner spaces (jeg ved jo hvor mange jeg skal fjerne, det har jeg tjekket i WORD) så virker det fint.

Jeg har ikke været udsat for at have fundet <% eller %> i min word tekst.

Men jeg vil anbefale først at konvertere dokumentet til asp men indsat content og tjekke om det virker. Derefter kan du begynde at erstatte dine linier med ASP-variabler.

Hmm! en lille PS. Jeg kan ikke få skidtet til at virke hvis jeg har indlejret grafik i det oprindelige dokument. ! Den ser jeg gerne en løsning på ;-)
Avatar billede jytte Nybegynder
28. maj 2002 - 09:26 #7
benson > Nu fik jeg det til at virke!

Jeg indsatte wordteksten umiddelbart efter "%>" og måtte lave en
"<%" til "<%" med "<<%="%"%>" erstatning i teksten. Men selv det billede der var i worddokumentet kom pænt med over -- jeg måtte dog
opdatere det samme dokument et par gange til serveren førend det ville virke, og så har jeg kun prøvet at indsætte tekststrenge, men det vil jo nok også virke når teksten kommer fra en database.

TAK FOR HJÆLPEN
Avatar billede benson Nybegynder
28. maj 2002 - 09:52 #8
jytte> Glad for at kunne hjælpe :-), men jeg skulle næsten give dig lidt point retur, for du har med din søg og erstat "<%" lige hjulpet mig til at få min grafik/logo med i dokumentet. Tak for det !
Avatar billede kaleb Nybegynder
02. september 2002 - 13:59 #9
Response.Addheader "Content-Disposition", "attatchment; filename=fax.doc" ????


Er det forstået korrekt at scriptet opretter et worddoc ved navn "fax.doc" ----- Hvorhenne gemmer den det og kan man styrer det?
Avatar billede jytte Nybegynder
22. september 2002 - 21:37 #10
Den worddokument-skabelon man ønsker at benytte skal hedde fax.doc (eller rettere det den hedder skal stå ud for filename= ). Men worddokumentet med indsat tekst fra ASP (evt. via database) bliver jo først oprettet når ASP-scriptet køres. Når ASP-scriptet køres åbnes word  i brugerens browser( så brugeren skal have word) og brugeren kan så gemme dokumentet som en doc-fil (med selvvalgt navn) på egen maskine. Worddokumentet eksisterer altså aldrig som selvstændig fil på serveren.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester