Avatar billede m-kjeldsen Nybegynder
13. marts 2006 - 18:32 Der er 27 kommentarer og
1 løsning

Export til f.x. Exel

Hej Eksperter.

På en side under JBU (en med password) kan man klikke på en knap, der overfører data fra database til f.x. Microsoft Exel.

Er det svært at lave. Jeg kører en hjemmeside for vores lille fodboldklub, og kunne derfor også tænke meíg denne funktion til kamplister.

Siden er programeret i ASP

Mogens
Avatar billede mitbrugernavn Praktikant
15. marts 2006 - 08:02 #1
hej

prøv dette

'opret et regneark navngiv det f.eks. dit_regneark - marker kolonnerne A,B,C,D,E - vælg indsæt - vælg navn - giv nu kolonnerne et navn f.eks. fodboldklub - husk at det antal kolonner du vælger skal være det samme som det antal kolonner fra db der skal over.

'læg et regneark ud på din server

' hent alle poster fra din database som almindelig

' har du f.eks. 5 kolonner i din db - id, navn, adresse, postnr, bue
' så er det A,B,C,D,E kolonner i regnearket
'

Set exConn = Server.CreateObject("ADODB.Connection")
exConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & Server.MapPath("dit_regneark") & ";" & "Extended Properties=""Excel 8.0;HDR=Yes;"";"

strSQL = "Select * from din-database"
set rs = conn.execute(strSQL)
if not rs.eof then
do

'Skriv til excel arket:
SQL = "INSERT INTO fodboldklub (A,B,C,D,E) VALUES ("
SQL = SQL & "'" & rs("id") & "', "
SQL = SQL & "'" & rs("navn") & "', "
SQL = SQL & "'" & rs("adresse") & "', "
SQL = SQL & "'" & rs("postnr") & "', "
SQL = SQL & "'" & rs("bue") & "') "
exConn.Execute(SQL)

rs.movenext
loop while not rs.eof
Avatar billede mitbrugernavn Praktikant
15. marts 2006 - 08:04 #2
det skal selvfølgelige ikke være

"'læg et regneark ud på din server
" - men læg det oprettede regneark ud på din server ;-))
Avatar billede m-kjeldsen Nybegynder
15. marts 2006 - 17:23 #3
Hej

Når jeg oploader denne kode, får jeg følgende fejl:

Microsoft VBScript compilation error '800a03f6'

Expected 'End'

/exel.asp, line 48

Min kode er her:

<%
Dim Connect, Id, strstrSQL, strDNS, rs

Set rs = Server.CreateObject("ADODB.RecordSet")

'Laver strSQL forespørgsel til tabel
'strstrSQL = "SELECT * FROM medlemmer ORDER by hold, medlemsnummer"

'Laver DNSles forbindelse til database
'strDNS = "Driver={Microsoft Access Driver (*.mdb)};" & "DBQ=d:\home\nfknetdk\db\medlem.mdb;"
'Åbner database og strSQL
rs.Open strstrSQL, strDNS, 1

%>



<%
Set exConn = Server.CreateObject("ADODB.Connection")
exConn.Open "Driver={Microsoft Access Driver (*.mdb)};" & "DBQ=d:\home\nfknetdk\db\medlem.mdb;" & ";" & "Extended Properties=""Excel 8.0;HDR=Yes;"";"

strstrSQL = "Select * from medlemmer"
set rs = conn.execute(strstrSQL)
if not rs.eof then
do

'Skriv til excel arket:
strSQL = "INSERT INTO fodboldklub (A,B,C,D,E,F,G,H,I,J,K,L) VALUES ("
strSQL = strSQL & "'" & rs("id") & "', "
strSQL = strSQL & "'" & rs("medlemsnummer") & "', "
strSQL = strSQL & "'" & rs("navn") & "', "
strSQL = strSQL & "'" & rs("adresse") & "', "
strSQL = strSQL & "'" & rs("postnr") & "', "
strSQL = strSQL & "'" & rs("by") & "') "
strSQL = strSQL & "'" & rs("Telefon") & "', "
strSQL = strSQL & "'" & rs("Mobil") & "', "
strSQL = strSQL & "'" & rs("mail") & "', "
strSQL = strSQL & "'" & rs("betalt") & "', "
strSQL = strSQL & "'" & rs("Fri") & "', "
strSQL = strSQL & "'" & rs("afdeling") & "', "
strSQL = strSQL & "'" & rs("hold") & "', "
strSQL = strSQL & "'" & rs("indmeldtdato") & "', "

exConn.Execute(strSQL)

rs.movenext
loop while not rs.eof
%>
Avatar billede mitbrugernavn Praktikant
15. marts 2006 - 17:26 #4
du mangler et end if til sidst ;-))

<%
Set exConn = Server.CreateObject("ADODB.Connection")
exConn.Open "Driver={Microsoft Access Driver (*.mdb)};" & "DBQ=d:\home\nfknetdk\db\medlem.mdb;" & ";" & "Extended Properties=""Excel 8.0;HDR=Yes;"";"

strstrSQL = "Select * from medlemmer"
set rs = conn.execute(strstrSQL)
if not rs.eof then
do

'Skriv til excel arket:
strSQL = "INSERT INTO fodboldklub (A,B,C,D,E,F,G,H,I,J,K,L) VALUES ("
strSQL = strSQL & "'" & rs("id") & "', "
strSQL = strSQL & "'" & rs("medlemsnummer") & "', "
strSQL = strSQL & "'" & rs("navn") & "', "
strSQL = strSQL & "'" & rs("adresse") & "', "
strSQL = strSQL & "'" & rs("postnr") & "', "
strSQL = strSQL & "'" & rs("by") & "') "
strSQL = strSQL & "'" & rs("Telefon") & "', "
strSQL = strSQL & "'" & rs("Mobil") & "', "
strSQL = strSQL & "'" & rs("mail") & "', "
strSQL = strSQL & "'" & rs("betalt") & "', "
strSQL = strSQL & "'" & rs("Fri") & "', "
strSQL = strSQL & "'" & rs("afdeling") & "', "
strSQL = strSQL & "'" & rs("hold") & "', "
strSQL = strSQL & "'" & rs("indmeldtdato") & "', "

exConn.Execute(strSQL)

rs.movenext
loop while not rs.eof
end if ' denne mangler
%>
Avatar billede m-kjeldsen Nybegynder
15. marts 2006 - 17:36 #5
Der må være en anden fejl i mine kopierede koder. Nu får jeg en HTTP500 fejl
Avatar billede mitbrugernavn Praktikant
16. marts 2006 - 09:42 #6
Jamen det er ikke nok at du connecter din database du skal også connecte dit regneark (regnearket fungere også som en database)

<%
''' her åbner du din access database
Dim Connect, Id, strstrSQL, strDNS, rs

Set rs = Server.CreateObject("ADODB.RecordSet")
'Laver DNSles forbindelse til database
strDNS = "Driver={Microsoft Access Driver (*.mdb)};" & "DBQ=d:\home\nfknetdk\db\medlem.mdb;"
'Åbner database og strSQL
rs.Open strstrSQL, strDNS, 1

'''her åbner du dit regneark
Set exConn = Server.CreateObject("ADODB.Connection")
exConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & Server.MapPath("dit_regneark") & ";" & "Extended Properties=""Excel 8.0;HDR=Yes;"";"

''her henter du posterne fra access databasen
strstrSQL = "Select * from medlemmer"
set rs = conn.execute(strstrSQL)
if not rs.eof then
do

'Skriv til excel arket:
strSQL = "INSERT INTO fodboldklub (A,B,C,D,E,F,G,H,I,J,K,L) VALUES ("
strSQL = strSQL & "'" & rs("id") & "', "
strSQL = strSQL & "'" & rs("medlemsnummer") & "', "
strSQL = strSQL & "'" & rs("navn") & "', "
strSQL = strSQL & "'" & rs("adresse") & "', "
strSQL = strSQL & "'" & rs("postnr") & "', "
strSQL = strSQL & "'" & rs("by") & "') "
strSQL = strSQL & "'" & rs("Telefon") & "', "
strSQL = strSQL & "'" & rs("Mobil") & "', "
strSQL = strSQL & "'" & rs("mail") & "', "
strSQL = strSQL & "'" & rs("betalt") & "', "
strSQL = strSQL & "'" & rs("Fri") & "', "
strSQL = strSQL & "'" & rs("afdeling") & "', "
strSQL = strSQL & "'" & rs("hold") & "', "
strSQL = strSQL & "'" & rs("indmeldtdato") & "', "

exConn.Execute(strSQL)

rs.movenext
loop while not rs.eof
end if
set rs = nothing

%>
Avatar billede m-kjeldsen Nybegynder
18. marts 2006 - 11:49 #7
Nu er det lige før jeg opgiver, og laver udskrift på en anden måde.

Jeg får hele tiden fejl "Siden kan ikke vises..."

Her er koden igen:


<%
''' her åbner du din access database
Dim Connect, Id, strstrSQL, strDNS, rs

Set rs = Server.CreateObject("ADODB.RecordSet")
'Laver DNSles forbindelse til database
strDNS = "Driver={Microsoft Access Driver (*.mdb)};" & "DBQ=d:\home\nfknetdk\db\medlem.mdb;"
'Åbner database og strSQL
rs.Open strSQL, strDNS, 1

'''her åbner du dit regneark
Set exConn = Server.CreateObject("ADODB.Connection")
exConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & Server.MapPath("medlemmer.xls") & ";" & "Extended Properties=""Excel 8.0;HDR=Yes;"";"

''her henter du posterne fra access databasen
strstrSQL = "Select * from medlemmer"
set rs = conn.execute(strSQL)
if not rs.eof then
do

'Skriv til excel arket:
strSQL = "INSERT INTO fodboldklub (A,B,C,D,E,F,G,H,I,J,K,L) VALUES ("
strSQL = strSQL & "'" & rs("id") & "', "
strSQL = strSQL & "'" & rs("medlemsnummer") & "', "
strSQL = strSQL & "'" & rs("navn") & "', "
strSQL = strSQL & "'" & rs("adresse") & "', "
strSQL = strSQL & "'" & rs("postnr") & "', "
strSQL = strSQL & "'" & rs("by") & "') "
strSQL = strSQL & "'" & rs("Telefon") & "', "
strSQL = strSQL & "'" & rs("Mobil") & "', "
strSQL = strSQL & "'" & rs("mail") & "', "
strSQL = strSQL & "'" & rs("betalt") & "', "
strSQL = strSQL & "'" & rs("Fri") & "', "
strSQL = strSQL & "'" & rs("afdeling") & "', "
strSQL = strSQL & "'" & rs("hold") & "', "
strSQL = strSQL & "'" & rs("indmeldtdato") & "', "

exConn.Execute(strSQL)

rs.movenext
loop while not rs.eof
end if
set rs = nothing

%>
Avatar billede mitbrugernavn Praktikant
18. marts 2006 - 18:04 #8
er det en almindelig side der ikke kan vises eller hva ??

opretter den regnearket med de data som du beder om ????

Når du har oprettet dit regneark skal du selvfølgelige have den til at hente det med flg.

response.redirect "stien /medlemmer.xls"

dette skal ind efter

rs.movenext
loop while not rs.eof
end if
set rs = nothing


response.redirect "stien /medlemmer.xls"
Avatar billede m-kjeldsen Nybegynder
19. marts 2006 - 09:22 #9
Det er siden her der ikke kan vises. Det er noget med en DNS-fejl
Avatar billede mitbrugernavn Praktikant
19. marts 2006 - 10:37 #10
tester du det på din lokale maskine ?? via din iis ??? eller direkte på serveren ???
Avatar billede mitbrugernavn Praktikant
19. marts 2006 - 10:41 #11
hvis du tester på din lokale maskine - ligger din db så som i dine koder ??
d:\home\nfknetdk\db\medlem.mdb
Avatar billede m-kjeldsen Nybegynder
19. marts 2006 - 10:42 #12
jeg kører direkte på server
Avatar billede mitbrugernavn Praktikant
19. marts 2006 - 10:47 #13
hvor ligger dit regneark ?  og kommer der ikke en linie der fortæller hvilken linie fejlen ligger i ??
Avatar billede m-kjeldsen Nybegynder
19. marts 2006 - 10:50 #14
Jeg har opgivet at bruge iis, så alt jeg laver på hjemmesiden programeres direkte på server.

Kan man med asp, trække en rapport ud fra database. Det kunne måske være en anden løsning
Avatar billede m-kjeldsen Nybegynder
19. marts 2006 - 10:53 #15
Jeg har prøvet med at ligge regnearket både på roden, og i den sti, hvor database ligger. Den eneste fejl jeg får er: HTTP 500 server fejl.
Avatar billede mitbrugernavn Praktikant
19. marts 2006 - 10:58 #16
læg regnearket i samme mappe som de asp filer du arbejder med
Avatar billede mitbrugernavn Praktikant
19. marts 2006 - 10:59 #17
'''her åbner du dit regneark
Set exConn = Server.CreateObject("ADODB.Connection")
exConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & Server.MapPath("medlemmer.xls") & ";" & "Extended Properties=""Excel 8.0;HDR=Yes;"";"


denne linie referere til samme mappe som dine asp filer
Avatar billede m-kjeldsen Nybegynder
19. marts 2006 - 11:08 #18
Det er jo det samme som i den forrige kode. Det har jeg prøvet. Men hvis regneark er det samme som en database, er der ikke skriverettigheder der hvor regneark ligger nu
Avatar billede mitbrugernavn Praktikant
19. marts 2006 - 11:10 #19
først skal du lige rette den sidste linie i strSQL erstat , med ) i slutningen
strSQL = strSQL & "'" & rs("indmeldtdato") & "') "
Avatar billede mitbrugernavn Praktikant
19. marts 2006 - 11:15 #20
'erstat denne linie

exConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & Server.MapPath("dit_regneark") & ";" & "Extended Properties=""Excel 8.0;HDR=Yes;"";"


'med denne linie
exConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & "DBQ=d:\home\nfknetdk\db\medlemmer.xls;" & "Extended Properties=""Excel 8.0;HDR=Yes;"";"
Avatar billede mitbrugernavn Praktikant
19. marts 2006 - 11:16 #21
og så flytter du regnearket op i mappen hvor databasen ligger
Avatar billede mitbrugernavn Praktikant
19. marts 2006 - 11:32 #22
prøv at lægge lave nogle poster i dit regneark læg den hvor databasen ligger og lave en asp fil med følgende kode:

Set rs = Server.CreateObject("ADODB.RecordSet")

Set exConn = Server.CreateObject("ADODB.Connection")
exConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & "DBQ=d:\home\nfknetdk\db\medlemmer.xls;" & "Extended Properties=""Excel 8.0;HDR=Yes;"";"



strSQL = "SELECT * FROM 'her skal stå det navn du har navngivet dine felter' "

rs.Open strSQL,exConn

rs.movefirst
while not(rs.EOF OR rs.BOF)
 
  Response.Write rs("A") & "<br>"

  rs.MoveNext
Wend

'lukker og slukker
rs.Close
exConn.Close
set rs=nothing
set exConn=nothing

' dette for at se om der er forbindelse til regnearket
Avatar billede m-kjeldsen Nybegynder
19. marts 2006 - 12:46 #23
Det kan være at jeg ikke har lavet regneark korekt. Kan du evt lave det og maile til mig på mk@nfknet.dk
Avatar billede mitbrugernavn Praktikant
19. marts 2006 - 19:34 #24
lav det på følgende måde - det er nemmere - for andres skyld er scriptene her:

opret test.asp med. flg.

<form id="form1" name="form1" method="post" action="test_2.asp" target="_blank">
  <input type="submit" name="Submit" value="hent info i regneark" />
</form>

opret test_2.asp med følgende:


<%
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "

DSN = DSN & " stien til din database  "
Conn.Open DSN

'denne linie gør at man kan gemme siden som et regneark
Response.ContentType = "application/vnd.ms-excel"
%>

<%
strSQL = "Select * From medlemmer"

Set rs = Conn.Execute(strSQL)
'dette er overskrifterne
Response.write "<table>"
Response.write "<tr>"
Response.write "<td>id</td>"
Response.write "<td>Medlemsnummer</td>"
Response.write "<td>Navn</td>"
Response.write "<td>Adresse</td>"
Response.write "</tr>"


If Not rs.EOF Then
do
' her er det fra db
Response.write "<tr><td>" & rs("id") & "</td>"
Response.write "<td>" &  rs("medlemsnr") & "</td>"
Response.write "<td>" &  rs("navn") & "</td>"
Response.write "<td>" &  rs("adresse") & "</td></tr>"
rs.movenext
loop while not rs.eof
Response.write "</table>"
end if
set rs = nothing

%>

når denne side åbner op - så vælg filer - gem som - xml
Avatar billede m-kjeldsen Nybegynder
20. marts 2006 - 12:00 #25
Tak for hjælpen. Godtnok virker det ikke, men jeg synes at vi stopper nu. Det har nok noget at gøre med skriverettigheder på mit webhotel. Jeg vil forsøge at lave udskrift på en anden måde. Du får point alligevel.

Mvh. Mogens
Avatar billede mitbrugernavn Praktikant
20. marts 2006 - 12:05 #26
det skal virke har testet det af - men opdagede at der var en fejl ret denne linie i dit data opkald i test_2

DSN = DSN & "d:\home\nfknetdk\db\medlem.mdb;"

jeg havde sat den til at kalde regnearket og det var jo helt galt
Avatar billede m-kjeldsen Nybegynder
20. marts 2006 - 12:19 #27
MANGE TAK - NU VIRKER DET
Avatar billede mitbrugernavn Praktikant
20. marts 2006 - 12:21 #28
super super - jeg kunne heller ikke forstå det - da jeg havde testet det af. det er faktisk lidt smart og enkelt og noget nemmerer at håndtere en et direkte regneark.
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