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

Link: Wichtiger Hinweis in eigener Sache!


 Autor: Klaus Keller Erstellt am: 2006-11-14 Aufrufe: 8530 


 << Vorheriger Tipp Nächster Tipp >>



Tipp 95: Excel-Datei per Excel-Objekt auslesen



In Tipp 92 habe ich Ihnen vorgestellt, wie Sie per ADO die Daten auslesen können. In diesem Tipp möchte ich eine andere Möglichkeit nutzen um die Daten auszulesen. Genutzt wird dabei Excel. Das setzt natürlich voraus, daß Excel am Server installiert ist. Bei Verwendung des Excel-Objekts stehen ausserdem deutlich mehr Möglichkeiten zur Verfügung, die ich allerdings nicht alle in diesem Tipp beschreiben kann. Zunächst ein einfaches Beispiel:

1   
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<%
dim xlApp, xlSheet, index, PfadExcelDatei

PfadExcelDatei = Server.MapPath("Test.xls")

Set xlApp = Server.CreateObject("Excel.Application")
xlApp.Workbooks.Open(PfadExcelDatei)

set xlSheet = xlApp.Worksheets(1)

Response.Write("Anzahl der Zeilen: " & xlSheet.Rows.Count)
Response.Write("<br><br>")

for index = 1 to xlSheet.Rows.Count
    if len(xlSheet.cells(index, 1)) > 0 then
        exit for
    end if
    Response.Write("<br>Zeile " & index & ":" & xlSheet.cells(index, 1))
next

xlApp.Workbooks.close
xlApp.Quit
set xlApp = nothing
%>

Geöffnet wird die Excel-Datei in Zeile 7. Um auf die Daten zugreifen zu können, muss noch der Zugriff auf das gewünschte Worksheet erfolgen, dafür wird in Zeile 9 ein Objekt des Sheets erstellt. Mit ObjektName.Rows.Count erhalten Sie die Anzahl der Zeilen. Aber vorsicht: Das heisst nicht, daß in allen Zeilen auch etwas enthalten ist! In einer Beispieldatei wurde immer 65536 als Anzahl ausgegeben, aber nur in ca. 1.000 Zeilen war Text enthalten. Daher muss geprüft werden, ob in diesen Zeilen auch wirklich etwas enthalten ist.

Zwar läuft die Schleife von Zeile 14 von 1 bis Rows.Count (also 65536), aber innerhalb der Schleife wird geprüft, ob das Feld ein Wert hat. Und wie Sie in Zeile 15 sehen, wird auf ein Feld mit ObjektName.cells(Zeilenindex, Spaltenindex) zugegriffen. Und wichtig: Vergessen Sie nicht die Excel-Datei zu schliessen und die Objekte zu zerstören!

Aber diese Form des Zugriffs auf die Excel-Datei hat weit mehr Möglichkeiten. Ein Beispiel um die Hintergrundfarbe zu erhalten:

1   
Farbe = xlSheet.cells(index, 1).Interior.Color)


Wie ich schon schrieb: Alles kann man hier nicht darstellen, das ist schon fast Stoff für ein Buch! Aber ich möchte Ihnen noch Links nennen, falls Bedarf besteht:
http://support.microsoft.com/kb/219151/DE/ Darin ist ein durchaus umfangreiches Beispiel, zwar für Visual Basic, aber in den meisten Dingen leicht auf VBScript und ASP umzuschreiben.

http://msdn2.microsoft.com/de-de/library/microsoft.office.tools.excel.aspx - Die Einstiegsseite, mit viel Infos.

http://msdn2.microsoft.com/de-de/library/microsoft.office.tools.excel.namedrange.interior.aspx
Hier finden Sie all jene Eigenschaften, die sich auf ein Feld beziehen, wie z.B. Color.



 << Zum vorherigen Tipp 94:
Anfangsbuchstaben groß schreiben

 Zum nächsten Tipp 96 >>
Eindimensionales Array sortieren

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