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
Annonceindlæg fra FPT Software
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
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 ;-))
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 %>
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 %>
15. marts 2006 - 17:36
#5
Der må være en anden fejl i mine kopierede koder. Nu får jeg en HTTP500 fejl
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 %>
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 %>
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"
19. marts 2006 - 09:22
#9
Det er siden her der ikke kan vises. Det er noget med en DNS-fejl
19. marts 2006 - 10:37
#10
tester du det på din lokale maskine ?? via din iis ??? eller direkte på serveren ???
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
19. marts 2006 - 10:42
#12
jeg kører direkte på server
19. marts 2006 - 10:47
#13
hvor ligger dit regneark ? og kommer der ikke en linie der fortæller hvilken linie fejlen ligger i ??
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
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.
19. marts 2006 - 10:58
#16
læg regnearket i samme mappe som de asp filer du arbejder med
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
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
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") & "') "
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;"";"
19. marts 2006 - 11:16
#21
og så flytter du regnearket op i mappen hvor databasen ligger
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
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
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
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
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
20. marts 2006 - 12:19
#27
MANGE TAK - NU VIRKER DET
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.
Kurser inden for grundlæggende programmering