Auf Excel Datei zugreifen...
Marc Schwarz
- asp.net
Hallo Zusammen
Ich muss Werte aus einer Excel Datei mit ASP abgreifen können. Das funktioniert ja ganz gut, wenn ich die Excel Datei wie eine Datenbank abfrage...
Das Problem ist nur: Verweise, Formeln und Funktionen funktionieren ja so nicht, weshalb ich die Werte nicht erhalte.
Die Excel Datei ist ziemlich kompliziert mit mehreren Arbeitsblättern, Verweise über Arbeitsblätter hinweg und tausende von Formeln bei denen etwas Berrechnet wird. Genau dieses Endergebnis müsste ich haben. Aber wie gesagt, all diese Formeln werden ja bei einem normalen ODBC Zugriff nicht verarbeitet.
Hat jemand eine Idee?
Gruss Marc
Halihallo Marc
Die Excel Datei ist ziemlich kompliziert mit mehreren Arbeitsblättern, Verweise über Arbeitsblätter hinweg und tausende von Formeln bei denen etwas Berrechnet wird. Genau dieses Endergebnis müsste ich haben. Aber wie gesagt, all diese Formeln werden ja bei einem normalen ODBC Zugriff nicht verarbeitet.
Nun ja. Um eine Excel-Datei zu verarbeiten dürfte wohl Excel am
besten sein. Und wie normal bei Microsoft lassen sie dir immer
irgendwelche Hintertürchen offen. Dieses Hintertürchen heisst OLE und
COM.
Etwas konkreter:
excelInstance = Server.CreateObject("Excel.Application")
Was man dann mit diesem excelInstance alles tun kann steht wohl alles
in der VBA-Dokumentation deines Excels (das macht nämlich (fast)
genau das selbe). Oder suche einfach nach "Excel OLE", da siehst du
dann ein paar Beispiele (wenn auch in anderen Sprachen, aber die
Klasse bleibt genau die gleiche).
Viele Grüsse
Philipp
Hallo Philipp
Das klappte so tatsächlich! Aber leider nur gleich zu beginn. Nachdem ich nun den PC neugestartet habe (mehrmals) und ich die Seite wieder aufrufe, bleibt die Seite weiss. Es ertönt ein kurzes Pling, aber ohne Fehlermeldung. Die Seite reagiert dann nicht mehr.
Wenn ich eine andere Excel Datei öffne, funktioniert es. Auch wenn ich einige Arbeitsblätter der Datei lösche, klappt es.
Gibt es eine Möglichkeit, an die Fehlermeldung ranzukommen?
Gruss Marc
PS: Hier der Code
set excel = Server.CreateObject("Excel.Application")
set sheet = excel.workbooks.open("e:\xls\xls_4.xls")
'* START SETZEN DER MIKRO WERTE *'
set write_hed_mod = sheet.Worksheets("hed mod")
write_hed_mod.cells(745, 2).value = 5
write_hed_mod.cells(746, 2).value = 4
set write_hed_mod = nothing
'* ENDE SETZEN DER MIKRO WERTE *'
set hed_mod = sheet.Worksheets("hed mod")
Response.Write(hed_mod.cells(745, 2))
set hed_mod = nothing
set sheet = nothing
set excel = nothing
Halihallo Marc
Die Excel Datei ist ziemlich kompliziert mit mehreren Arbeitsblättern, Verweise über Arbeitsblätter hinweg und tausende von Formeln bei denen etwas Berrechnet wird. Genau dieses Endergebnis müsste ich haben. Aber wie gesagt, all diese Formeln werden ja bei einem normalen ODBC Zugriff nicht verarbeitet.
Nun ja. Um eine Excel-Datei zu verarbeiten dürfte wohl Excel am
besten sein. Und wie normal bei Microsoft lassen sie dir immer
irgendwelche Hintertürchen offen. Dieses Hintertürchen heisst OLE und
COM.Etwas konkreter:
excelInstance = Server.CreateObject("Excel.Application")
Was man dann mit diesem excelInstance alles tun kann steht wohl alles
in der VBA-Dokumentation deines Excels (das macht nämlich (fast)
genau das selbe). Oder suche einfach nach "Excel OLE", da siehst du
dann ein paar Beispiele (wenn auch in anderen Sprachen, aber die
Klasse bleibt genau die gleiche).Viele Grüsse
Philipp
Halihallo Marc
Das klappte so tatsächlich! Aber leider nur gleich zu beginn. Nachdem ich nun den PC neugestartet habe (mehrmals) und ich die Seite wieder aufrufe, bleibt die Seite weiss. Es ertönt ein kurzes Pling, aber ohne Fehlermeldung. Die Seite reagiert dann nicht mehr.
Uh? - Das Pling verwundert mich jetzt etwas :-)
Nur eines habe ich gesehen:
set hed_mod = sheet.Worksheets("hed mod")
Response.Write(hed_mod.cells(745, 2))
Bei der Ausgabe willst du wohl kaum das Object cells(745,2) ausgeben,
sondern den Wert dieser Zelle. => .value anfügen:
Response.Write(hed_mod.cells(745, 2).value)
Wenn ich eine andere Excel Datei öffne, funktioniert es. Auch wenn ich einige Arbeitsblätter der Datei lösche, klappt es.
Was passiert, wenn du die problematische Datei e:\xls\xls_4.xls mit
Excel manuell öffnest? - Geht das? - Könnte sein, dass die Datei
korrupt ist, wobei ich dies zwar für unwahrscheinlich halte.
Gibt es eine Möglichkeit, an die Fehlermeldung ranzukommen?
Es sollte per Default eine kommen, wenn ein Fehler über die COM-
Schnittstelle gemeldet wird.
Viele Grüsse
Philipp