Avatar billede krisbjoern Nybegynder
05. oktober 2001 - 16:37 Der er 1 kommentar og
1 løsning

udtræk af OLE DB-Objekt(word dok) fra database

Hvordan får jeg mit ASP script til at udskrive min
store tekst-fil fra min database.
Jeg har oprettet teksten via et OLE DB-Object
Filen er et word dokument.
Avatar billede mortrr Praktikant
17. oktober 2001 - 23:52 #1
Du er sikkert ude efter at sende dokumentet ud til brugeren som et word-dokument. Ikke?

Det største problem ligger i at få fat i de rigtige binære data i filen, da et OLE objekt faktisk kan bestå af mange dele.
Men hvis vi nu går ud fra at det \"kun\" er en word-fil, så er det til at håndtere.

Så skal vi \"bare\" have fjernet OLE informationerne i starten af de binære data.
Headerens længde er ikke altid den samme, så vi er nødt til at kigge på hvor lang den er.

Første integer er Signaturen - 151C
Herefter kommer en integer der fortæller hvor lang headeren er, fx 2D00 = 45 byte.
Så har vi objekt typen(OT_STATIC, OT_LINKED, OT_EMBEDDED). Hvis den er 0100 0000, bør man faktisk stoppe, da filen så ligger eksternt.
Herefter kommer NameLen - længden af klassens navn = 0900, og ClassLen - længden af klassens navn fx 1000.
Herefter NameOffset og ClassOffset, som begge er integers.

For at finde selve filen skal vi bruge HeaderSize og ClassLen. Oven i dette lægger vi 24 byte.
I eksemplet ovenover bliver det:
45 (HeaderSize) + 16 (ClassLen) + 24 = 85.

Så læser man bare fra byte 85 og frem.

sqlStr=    \"SELECT minfil FROM Testtabel\"

rsSet.Open sqlStr, dbConn
if not rsSet.EOF then
    set adoStream=Server.CreateObject(\"ADODB.Stream\")
    adoStream.Type = 1
    adoStream.Open
    adoStream.Position = 0
    adoStream.Write rsSet.Fields(0).Value

    adoStream.Position = 0
    Header=adoStream.Read(20)
    HeaderSize=ascB(MidB(Header,3,1))+256*ascB(MidB(Header,4,1))
    ClassLen=ascB(MidB(Header,11,1))+256*ascB(MidB(Header,12,1))
    adoStream.Position=HeaderSize+ClassLen+24

    Response.BinaryWrite adoStream.Read
end if
rsSet.Close
set rsSet=Nothing

- Morten
Avatar billede krisbjoern Nybegynder
01. november 2001 - 04:03 #2
Jeg har selv løst problemet på anden vis...
Tak for svaret
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