Avatar billede websam Nybegynder
19. oktober 2004 - 17:38 Der er 17 kommentarer og
2 løsninger

Oprettelse af excel ark direkte på server fra asp ?

Hejsa,

jeg vil gerne vide om der er nogen der har nogle eksempler på hvorledes man opretter et excel ark på en server og derefter smider data i arket ?

/Websam
Avatar billede websam Nybegynder
19. oktober 2004 - 19:10 #1
Jeg glemte at skrive at det selvfølgelig skal ske fra asp :o)

/Websam
Avatar billede hiks Nybegynder
19. oktober 2004 - 20:28 #2
hej

dette virker kun på nyere excel installationer ellers skal du have fat i komponent eller have excel installeret på serveren, således at dennes komponent kan tilgåes ellers... Så lav et .asp og gør følgende:

<%
Response.Buffer = True
Response.ContentType="application/vnd.ms-excel"
Response.AddHeader "content-disposition",  "attachment; filename=excel_ark.xls"

With Response
    .Write "<TABLE>"
    .Write "<TR>"
    .Write "<TD>EN CELLE</TD>"
    .Write "<TD>EN TIL CELLE</TD>"
    .Write "</TR>"
    .Write "<TR>"
    .Write "<TD>Altså opbygning ligesom en normal tabel</TD>"
    .Write "<TD>Der er der ingen ben i...</TD>"
    .Write "</TR>"
    .Write "</TABLE>"
End With
%>

/hiks
Avatar billede michaelfp Nybegynder
19. oktober 2004 - 20:33 #3
Hvis du forestiller dig, at tabellen RS i nedenstående funktion, indeholder de data du vil have vist i regnearket, så vil regnearket blive dannet ved at kalde funktionen. Regnearket kan åbnes ved at klikke på linket.

  Function CreateExcel(Title,CrmFilename)
  Dim FSO, act
  Set FSO = Createobject("scripting.filesystemobject")
  Set act = Fso.CreateTextfile(server.mappath(Fname),true)

  If Not Rs.EOF and not Rs.BOF Then
    act.WriteLine "<html xmlns:x=""urn:schemas-microsoft-com:office:excel"">"
    act.WriteLine "<head>"
    act.WriteLine "<!--[if gte mso 9]><xml>"
    act.WriteLine "<x:ExcelWorkbook>"
    act.WriteLine "<x:ExcelWorksheets>"
    act.WriteLine "<x:ExcelWorksheet>"
    act.WriteLine "<x:Name>"& title &"</x:Name>"
    act.WriteLine "<x:WorksheetOptions>"
    act.WriteLine "<x:Print>"
    act.WriteLine "<x:ValidPrinterInfo/>"
    act.WriteLine "</x:Print>"
    act.WriteLine "</x:WorksheetOptions>"
    act.WriteLine "</x:ExcelWorksheet>"
    act.WriteLine "</x:ExcelWorksheets>"
    act.WriteLine "</x:ExcelWorkbook>"
    act.WriteLine "</xml>"
    act.WriteLine "<![endif]--> "
    act.WriteLine "</head>"
    act.WriteLine "<body>"

    Act.Writeline "<table border=1>"
    Act.Writeline "<Tr>"
    For X = 0 to Rs.Fields.count - 1
      Act.Writeline "<Td><b>" & Rs.Fields.Item(x).Name) & "</b></td>"
    Next
    Act.Writeline "</Tr>"
    While not Rs.Eof
      Act.Writeline "<Tr>"
      For X = 0 To Rs.Fields.Count - 1
          Act.Writeline "<Td>" & Rs.Fields.Item(X).Value
      Next
      Act.Writeline "</Tr>"
      Rs.Movenext
    Wend
    Act.Writeline "</Table>"
    act.writeline "<tr></tr>"
    act.writeline "<tr>Powered by *Mig*</tr>"
    act.WriteLine "</body>"
    act.WriteLine "</html>"

  End if
  Act.close
  %>
    Din excel fil kan hentes hér: <a href="<%=crmfilename%>" target="_blank"> Klik her </a><%
  End function
Avatar billede websam Nybegynder
19. oktober 2004 - 20:34 #4
Øhhh....det er nok mig der ikke fatter det men den skal skrive en masse værdier i excel arket og ikke på selve siden ?!?

/Websam
Avatar billede hiks Nybegynder
19. oktober 2004 - 20:36 #5
hvem skriver du til nu?

hvis det er min du hentyder til så er det sikkert fordi du ikke har lagt den i en separat asp fil eller sidder og reloader.

/hiks
Avatar billede hiks Nybegynder
19. oktober 2004 - 20:40 #6
prøv dette link - det er ovenstående bare cuttet direkte:

http://uploaded.dk/active/excel_write.asp

Åbner den stadig bare på siden?

/hiks
Avatar billede websam Nybegynder
19. oktober 2004 - 20:48 #7
Nej det gør den ikke, men den skal ikke downloade den skal bare lave en excel fil, smide nogle data i arket og gemme den på serveren. Et andet program på serveren bruger så de oplysninger der er gemt i excel arket. :o)

/Websam
Avatar billede michaelfp Nybegynder
19. oktober 2004 - 20:50 #8
Det er jo præcis det funktionen i mit eksempel gør. Hvis det er konstante værdier, du vil indsætte så skal du bare erstatte rs("værdierne") med dine konstanter!
Avatar billede websam Nybegynder
19. oktober 2004 - 20:52 #9
michaelfp >> Jeg er lige ved at kigge på dit eksempel hæng lige på lidt endnu :o)

/Websam
Avatar billede websam Nybegynder
19. oktober 2004 - 21:08 #10
michaelfp >> Har lige lavet diverse rettelser til småfejl i din kode, men kan ikke rigtig se sammenhænget i resten med denne fejl kode :

Object required: 'Rs' --- i denne linie --- If Not Rs.EOF and Not Rs.BOF Then

Og det giver jo sig selv da der ikke er lavet et object Rs. Du har sikker brugt koden til at hente fra en database og så smide i et excel ark eller noget i den stil. Dertil kommer at der i excel arket er forudbestemt hvor dataen skal ligges f.eks felt A1 skal altid have en variabel værdi G13 En anden variabel værdi osv.

har du nogle forslag til dette ?

/Websam
Avatar billede michaelfp Nybegynder
19. oktober 2004 - 22:02 #11
I dette stykke kode, indsættes kolonneoverskrifter. Koden kan du gentage for hver kolonne du vil have overskrift i:
    Act.Writeline "<table border=1>"
    Act.Writeline "<Tr>"

    'gentag næste linie for hver kolonne overskrift
    Act.Writeline "<Td><b>" & "-din overskrift-" & "</b></td>"

    Act.Writeline "</Tr>"

For hver række du vil vise data i ændres koden til:

      Act.Writeline "<Tr>"
      'næste linie udfylder en celle i rækken
      Act.Writeline "<Td>" & "celleværdi"

      Act.Writeline "</Tr>"

Iøvrigt: Der er intet forudbestemt - regnearket er dynamisk og jo - du skal fjerne RS som referere til det recordset eksemplet henter data fra.
Avatar billede websam Nybegynder
20. oktober 2004 - 09:15 #12
Skal jeg så forstå det således at jeg ikke kan sætte en værdi ind i et feltet D5 bare som eksempel ? Programmet der skal bruge regnearket benytter sig nemmelig af at hente fra f.eks felt D5 og så fremdeles !

/Websam
Avatar billede hiks Nybegynder
20. oktober 2004 - 09:26 #13
ligegyldigt hvilket af vores eksempler du tager udgangspunkt i så er du nødt til at tælle dig frem til hvilken celle som D5 er. Dvs 5 x <TR> og efterfølgende 4 x <TD>!

/hiks
Avatar billede hiks Nybegynder
20. oktober 2004 - 09:29 #14
hvis din server har excel installeret så kan du gøre som følgende eksempel - men dette kan ikke lade sig gøre uden excel på serveren:

http://www.serverwatch.com/tutorials/article.php/1493331

/hiks
Avatar billede websam Nybegynder
20. oktober 2004 - 09:34 #15
hiks >>
"ligegyldigt hvilket af vores eksempler du tager udgangspunkt i så er du nødt til at tælle dig frem til hvilken celle som D5 er. Dvs 5 x <TR> og efterfølgende 4 x <TD>!"

Ok det var så lidt mere kedeligt da jeg har frem til CG45 i felter :o( Men så må det jo blive på den måde !

"hvis din server har excel installeret så kan du gøre som følgende eksempel - men dette kan ikke lade sig gøre uden excel på serveren:

http://www.serverwatch.com/tutorials/article.php/1493331"

Der er Excel installeret på den server hvor det skal køre så jeg vil lige prøve at kigge den artikel lidt efter i sømmene :o)

/Websam
Avatar billede websam Nybegynder
20. oktober 2004 - 10:56 #16
Nå, men jeg har fået det til at virke med jeres forslag ovenfor er det ok at i deler point ? Men sikke en masse linier der skulle til for at få det lavet :o)

/Websam
Avatar billede hiks Nybegynder
20. oktober 2004 - 10:58 #17
fint for mig - og ja det er en omgang snavs!

Man kan lave det meste functions baseret dog - således at man kan kalde ny celle med indhold og rækker osv. - men det er stadig ikke kønt!

/hiks
Avatar billede websam Nybegynder
20. oktober 2004 - 11:22 #18
Jeg arbejder udelukkende med function's og sub's i klasser når jeg koder, men der er stadig mange linier der skal skrives. Har oven i købet lavet en function der generere tomme felter bare for ikke at skulle skrive linien <td></td> hver gang der skal laves et tomt felt :o)

/Websam
Avatar billede hiks Nybegynder
25. oktober 2004 - 10:16 #19
super

skal vi ha lukket?

/hiks
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