Avatar billede neander Nybegynder
12. september 2003 - 10:35 Der er 16 kommentarer og
2 løsninger

Hente data fra Excel?

Er det muligt at hente data fra Excel med ASP?
Hvor bevendigt er det evt?
Hvor finder jeg evt tutorials om det?
Avatar billede hcm Nybegynder
12. september 2003 - 10:42 #1
Hvis ikke man kan direkte, kan du evt. lave en access db, der har tabeller der linker til regnearket. Det er måske ikke kønt, men vil virke.
Avatar billede neander Nybegynder
12. september 2003 - 10:52 #2
hmm... det var måske også en løsning. Ved du hvor jeg kan læse om hvordan man linker mellem ACCESS og Excel?
Avatar billede neander Nybegynder
12. september 2003 - 10:54 #3
Men et færdigt eksempel på at hente noget frem fra EXCEL ville være tip top!
Avatar billede the_bma_man Nybegynder
12. september 2003 - 11:04 #4
Hep.
Du kan da connecte til Excel på akkurat samme måde, som en Access.

Vidunderet hertil hedder ODBC.
Avatar billede hcm Nybegynder
12. september 2003 - 11:14 #5
ODB-hvaffor noget?? Just kidding...
Det er selvfølgelig den mest optimale løsning.

Ellers laver du bare en link-tabel i access som peger på regnearket. Det er ganske simpelt
Avatar billede neander Nybegynder
12. september 2003 - 11:18 #6
Jeg kan godt li' metoden som linker til Excelarket. Men først vil jeg gerne have styr på at hente direkte fra Excel. Jeg har brugt dette script, som laver fejl på den linje med response.write:

<%

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

'Connect til Excel via ODBC driver. Angiv fil navnet, her hedder filen fil.xls
'DriverID=790 betyder Excel97
myConn.Open "Driver={Microsoft Excel Driver (*.xls)};READONLY=TRUE;DBQ="&Server.MapPath("fil.xls")&";DriverID=790"

'Du kan skrive * for at vælge alle felter, eller feltnavne for at vælge nogle udvalgte (Fornavn, Efternavn)
strSQL = "SELECT * FROM myRange"

'Hent data fra excel.
rs.Open strSQL,myConn

'Flyt til første record
rs.movefirst
'Udskriv alle record. EOF End of File, BOF Begining of File.
'Udskriv kun hvis der er noget i excel filen eller indtil alle er udskrevet
while not(rs.EOF OR rs.BOF)
  'Udskriv navn
  Response.Write "<br>Navn fra Excel filen : " & rs("A") & " " & rs("B")
  'Flyt til næste record
  rs.MoveNext
Wend

'Rydder pænt op efter os
rs.Close
myConn.Close
set rs=nothing
set myConn=nothing
%>

Hvad kan være galt her?
Avatar billede neander Nybegynder
12. september 2003 - 11:19 #7
fejlmedd.:
Elementet kan ikke findes i den samling, der svarer til det anmodede navn eller ordenstal.
/exceltest/Default.asp, line 22
Avatar billede hcm Nybegynder
12. september 2003 - 11:33 #8
Jeg smider et svar, hvis du kan bruge mit til noget, men hvis the_bma_man kan hjælpe dig til en løsning via ODBC, er pointene vel hans, da det jo er det spørgsmålet egentlig går på.
Avatar billede neander Nybegynder
12. september 2003 - 11:39 #9
Jeg har læst mig til dette script, men får fejlmedd.

<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
          "Data Source=fil.xls;" & _
          "Extended Properties=""Excel 8.0;HDR=No;"";"

'Ret SQL til med navnet på det ark/sheet som B8 er på
SQL = "SELECT * from 'myRange'"

Set RS = Server.CreateObject("ADODB.Recordset")
RS.Open SQL, Conn, 3, 1

Response.write RS(0)
RS.Close

%>

Fejlmedd.:
Der er en syntaksfejl i forespørgslen. Forespørgslens delsætning er ikke fuldstændig.
/exceltest/Default.asp, line 11
Avatar billede neander Nybegynder
12. september 2003 - 11:49 #10
Folk siger det er skide nemt!?
Bevis det! Jeg kan ikke få det til at virke :~}
Avatar billede hcm Nybegynder
12. september 2003 - 11:52 #11
Ellers er der jo min workaround ;-)
Avatar billede neander Nybegynder
12. september 2003 - 11:54 #12
Men det kunne jo også være at the_bma_man kunne bevise hvor nemt det var direkte fra Excel ;-)
Avatar billede the_bma_man Nybegynder
12. september 2003 - 11:55 #13
Du skal definere (så vidt jeg da husker) et dataareal i din excel-fil.
Så åbner du din ODBC-forbindelse til xls-filen.

Du kan så lave en select * from <tabel> where ...
her er tabellen så bare dit dataareal.
Avatar billede neander Nybegynder
12. september 2003 - 12:22 #14
:o)

Det er også det jeg har gjort. Jeg har markeret de felter på arket hvor jeg henter data fra, og kaldt arealet "myRange". Det funker ikke...
Avatar billede neander Nybegynder
12. september 2003 - 12:34 #15
nå, men jeg lukker. Måske skulle jeg bare købe en bog om det, hvis der findes sådan en... tak for debatten.
Avatar billede p_johansen Nybegynder
15. september 2003 - 15:17 #16
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
          "Data Source=fil.xls;" & _
          "Extended Properties=""Excel 8.0;HDR=No;"";"

'Ret SQL til med navnet på det ark/sheet som B8 er på
SQL = "SELECT * from myRange"

DET VIRKER
Avatar billede bak Forsker
26. september 2003 - 15:19 #17
prøv lige det her, neander.
en meget lille ændring :-)


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

'Connect til Excel via ODBC driver. Angiv fil navnet, her hedder filen fil.xls
'DriverID=790 betyder Excel97
myConn.Open "Driver={Microsoft Excel Driver (*.xls)};READONLY=TRUE;DBQ="&Server.MapPath("fil.xls")&";DriverID=790"

'Du kan skrive * for at vælge alle felter, eller feltnavne for at vælge nogle udvalgte (Fornavn, Efternavn)
strSQL = "SELECT * FROM myRange"

'Hent data fra excel.
rs.Open strSQL,myConn

'Flyt til første record
rs.movefirst
'Udskriv alle record. EOF End of File, BOF Begining of File.
'Udskriv kun hvis der er noget i excel filen eller indtil alle er udskrevet
while not(rs.EOF OR rs.BOF)
  'Udskriv navn
  'har indsat 0 og 1 istedet for "A" & "B"
  Response.Write "<br>Navn fra Excel filen : " & rs(0) & " " & rs(1)
  'Flyt til næste record
  rs.MoveNext
Wend

'Rydder pænt op efter os
rs.Close
myConn.Close
set rs=nothing
set myConn=nothing
Avatar billede the_bma_man Nybegynder
26. september 2003 - 18:52 #18
Jamen, takker da for point.

Håber, du fik det til at virke!!
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

Seneste spørgsmål Seneste aktivitet
I går 21:00 Libre Office Impress Af Frank i Andre styresystemer
I går 11:47 VB script Af Jenshentze i Word
I går 11:21 Popup ved opstart Af mort1 i Windows
04/0918:50 Slet lokal konto Af ErikHg i Windows
04/0916:05 Ændre tal i en celle Af xvid i Excel