Artikel - Detailansicht

Icon Aktuelles Zugriff auf Excelsheets

Zum Auslesen von Daten eines Excel-Sheets gibt es mehrere Möglichkeiten, zwei sollen hier einmal kurz vorgestellt werden.
Die einfachste Methode besteht darin einen ODBC-Connect auf die Exceldatei herzustellen. Dazu richtet man sich einen normalen ODBC-DSN ein (mehr über ODBC-Quellen und DSN steht in den tutorials) auf die XLS-Datei ein, die man auslesen möchte.

Als Datenquelle soll die nebenstehende Exceldatei dienen:

Zu beachten ist hier, dass die erste Zeile als Spalterheader interpretiert wird und die Arbeitsmappe einen Namen erhalten muss, der später als eine Art Tabellennamen dient.
Hat man alles passend eingerichtet kann man wie gewohnt mit dem <CFQUERY>-Tag die Daten auslesen:

<cfquery name="quser" datasource="userdaten" dbtype="ODBC">
  select * from `Mappe1$`
</cfquery>
<cfoutput query="quser">
  #quser.user# : #quser.pass# <br>
</cfoutput>

Die Arbeitsmappe im Excelfile selbst heist Mappe1, man beachte die Schreibweise, wenn man sie im SQL-Statment anspricht! Die Apostrophe müssen reverse Apostrophe sein.

Will oder kann man keinen DSN im CF-Administrator erstellen, bietet sich mal wieder der Zugriff mit den schon öfters vorgestellen Active Data Objects (ADO). ein kurzes Beispielprogramm

<!----pfad ------->
<cfset DBPath="C:Serdaten.xls">
<cfset dsn="DRIVER={Microsoft Excel-Treiber (*.xls)};
DBQ=#DBPath#;FIL=MSExcel"
>

<cfobject type="COM" name="xls" class="ADODB.Connection" action="CREATE">

<!----verbindung zur xls-datei herstellen ----->
<cfset dummy=xls.open("#dsn#","","0","0")>

<!---recordset erzeugen ----------->
<cfset rs=xls.Execute("select * from `Mappe1$` where user like 'a%'","","0")>

<!---loop ueber die exceldaten------->
<cfloop condition="not #rs.eof#">  

  <!---fieldobjekt mit der aktuellen reihe des recordsets erzeugen---> 
  <cfset oF=rs.Fields>   
    
  <!---item-objekt erzeugen---> 
  <cfset it=oF.Item("user")>
   
  <!---Wert aus db ausgeben---> 
  <cfoutput>   
    #it.value#<br>  
  </cfoutput> 

  <!---db-cursor auf naechste datenreihe bewegen---->     
  <cfset dummy=rs.moveNext()>

</cfloop>

<!---verbindung zur datei schliessen---->
<cfset dummy=xls.close()>

Auch hier ist die 'virtuelle Tabelle' des SQL-Statments mit dem Namen der Arbeitsmappe in der Form `Mappe1$` anzusprechen.



Steffen Goldfuss steffen@goldfuss.de - 22.02.2000

Zurück


Das deutsche ColdFusion-Forum cfml.de ist das Portal für Einsteiger und Experten zum Thema ColdFusion und der ColdFusion Markup Language (CFML).

© 2017 Webdesign & Hosting: CHC ONLINE Kassel | SOLVA Content-Management-System CMS
Urlaub-Angebote.de - Urlaub mit Bestpreis-Garantie buchen