webForumDet fria alternativet

Läs från .xls fil.

ASP

2 svar · 375 visningar · startad av Asa

Medlem sedan dec. 20011 860 inlägg
Frågan#1

Har en kod som ska hämta all data från en excelfil och skriva ut den:

<%Set cnnExcel = Server.CreateObject("ADODB.Connection")
cnnExcel.Open "DRIVER=Microsoft Excel Driver (*.xls);DBQ=" & Server.MapPath("vällingbytest.xls")

Set rstExcel = Server.CreateObject("ADODB.Recordset")
rstExcel.Open "SELECT * FROM [Blad1$]", cnnExcel

iCols = rstExcel.Fields.Count%>
<table border="1">
  <%For I = 0 To iCols - 1
    Response.Write "<th>"
    Response.Write rstExcel.Fields.Item(I).Name
    Response.Write "</th>" & vbCrLf
  Next
  rstExcel.MoveFirst
  Do While Not rstExcel.EOF
    Response.Write "<tr>" & vbCrLf
      For I = 0 To iCols - 1
        Response.Write "<td>"
	Response.Write rstExcel.Fields.Item(I).Value
	Response.Write "</td>" & vbCrLf
      Next
    Response.Write "</tr>" & vbCrLf
  rstExcel.MoveNext
  Loop%>
</table>

<%rstExcel.Close
Set rstExcel = Nothing

cnnExcel.Close
Set cnnExcel = Nothing%>

Första gången jag ska ladda denna sida så ser man allt men sen om man laddar om sidan får man detta felmess:

Provider (0x80004005)
Åtgärden avbröts
/jobb/huttanius/excel.asp, line 2

Varför detta fel? I Excelfilen kommer jag lagra en hel del data precis som en liten databas..

Medlem sedan dec. 20011 860 inlägg
#2

Jag ändrade till denna då funkade det:
cnnExcel.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("vällingbytest.xls") & ";Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"""

Medlem sedan dec. 20011 860 inlägg
#3

Så här gjorde jag för att läsa från excelfilen och sedan spara till databas. Om en post finns redan så uppdaterar den posten. Bara om det är ett unikt värde som finns med i excelfilen..

<%If Request.QueryString("action") = "" Then%>
  <a href="excel.asp?action=import">Importera från excelfil</a>
<%ElseIf Request.QueryString("action") = "import" Then
  Set rstExcel = Server.CreateObject("ADODB.Recordset")
  rstExcel.Open "SELECT * FROM [Blad1$]", cnnExcel

  i=0
  Do While Not rstExcel.EOF
    Set Elev=Conn.Execute("Select namn,pnr,elevID From elever Where pnr='" & rstExcel.Fields.Item(1).Value & "'")
      If Not Elev.EOF Then
        Conn.Execute("Update elever Set namn='" & rstExcel.Fields.Item(0).Value & "',pnr='" & rstExcel.Fields.Item(1).Value & "' Where elevID=" & Elev("elevID"))
      Else
        Conn.Execute("Insert Into elever(namn,pnr) Values('" & rstExcel.Fields.Item(0).Value & "','" & rstExcel.Fields.Item(1).Value & "')")
      End If
    Elev.Close
    Set Elev=Nothing
  i=i+1
  rstExcel.MoveNext
  Loop

  rstExcel.Close
  Set rstExcel = Nothing

  With response
    .write "<script language=Javascript>"
    .write "alert('Du har importerterat/skrivit över " & i & " st elever!');"
    .write "self.location.href='excel.asp';"
    .write "</script>"
  End with 
ENd If%>
268 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
130 ms — ändringar (db)