asphelper.de - Tipps & Skripts - Excel-Datei per ADO auslesen

Link: Wichtiger Hinweis in eigener Sache!


 Autor: Klaus Keller Erstellt am: 2006-05-28 Aufrufe: 10843 


 << Vorheriger Tipp Nächster Tipp >>



Tipp 92: Excel-Datei per ADO auslesen



Vorweg ein Hinweis: Eine Excel-Datei eignet sich nicht als Datenbank, dafür gibt es richtige Datenbanken in Form von Access, SQL-Server, MySQL, Interbase usw. Bei Excel können trotz eines korrekten Quellcodes Fehler auftreten, dazu kann kein Mehrfacher Zugriff erfolgen. Ist die Excel-Datei bereits geöffnet, entweder in Excel selbst oder durch ASP, tritt ein Fehler auf.

ADO bietet die Möglichkeit, auf viele unterschiedliche Datenquellen zugreifen zu können. So auch auf Excel. Aufgrund inzwischen mehrerer Anfragen, teils auch im Forum, möchte ich Ihnen aufzeigen wie Excel-Dateien ausgelesen werden können. Eingesetzt wird ein ODBC-Treiber und eine SQL-Anweisung, damit stehen die Daten innerhalb eines Recordset zur Verfügung. Zuerst mal ein Beispiel das den Zugriff demonstriert:
1   
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
dim rs, strConn, strSQL

strConn = "DRIVER=Microsoft Excel-Treiber (*.xls);DBQ=" & _
            Server.MapPath("Test.xls")

strSQL = "SELECT * FROM [Tabelle1$a1:b]"

set rs = Server.CreateObject("ADODB.Recordset")

rs.open strSQL, strConn, 3, 3

if rs.EOF then
    Response.Write("Kein Datensatz gefunden")
else
    Response.Write("Anzahl der Treffer:" & rs.Recordcount)
    Do while not rs.EOF
        Response.Write("<br>" & rs.Fields("Vorname").Value & " " & _
                            rs.Fields("Nachname").Value)
        rs.MoveNext
    Loop
end if
rs.close
set rs = nothing


In Zeile 6 steht die SQL-Anweisung, interesant daraus ist:
Tabelle1$a1:b

Zuerst muss die Tabelle angegeben werden, hier habe ich den Standardwert "Tabelle1" angegeben. Anschliessend erfolgen die Feldangaben im Format $von:bis. Optional ist die Angabe der Zeilen, hier von 1 beginnend. Aber Vorsicht: das erste Feld (1) steht nicht im Recordset zur Verfügung, somit steht als erster Datensatz "a2" zur Verfügung! Sie können die Anzahl der Felder auch weiter eingrenzen:
Tabelle1$a1:b5

Somit stehen alle Datensätze von a2 bis a5 (bzw. b5) zur Verfügung. In Zeile 17 erfolgt die Ausgabe, hier habe ich ein Feldname verwendet, dieser steht an erster Stelle der Reihe, in Beispiel oben auf a1 bzw. b1.


Herunterladen: tip92.zip


 << Zum vorherigen Tipp 91:
'Bitte warten Sie' oder ein Fortschrittsbalken einblenden

 Zum nächsten Tipp 93 >>
Zufälligen Datensatz anzeigen

top top
© Copyright By Klaus Keller, 2001-2008 - Alle Rechte vorbehalten.