Autor Thema: Excel Datei auf Server auslesen  (Gelesen 3851 mal)

Offline joan

  • Junior Mitglied
  • **
  • Beiträge: 60
Excel Datei auf Server auslesen
« am: 01.12.08 - 16:35:49 »
Hallo,

Ich habe die Aufgabe, per Email an eine Datenbank gesendete Excel Dateien auszulesen und dann als XML an ein SAP System zu senden. Die Applikation dazu steht bereits und läuft auf meinem Client einwandfrei. Excel wird dabei via OLE mit einer eigenen Klasse angesprochen.

Auf dem Server, auf dem die Applikation laufen soll, wurde Excel 2003 installiert (das gleiche wie auf dem Client), allerdings (wer hätte es gedacht ;) ) läuft die Applikation dort nicht. Stattdessen schmiert Excel beim Erzeugen des Automation Objects ab, bringt eine Fehlermeldung

"Microsoft Office Excel has encountered a problem and needs to close.  We are sorry for the inconvenience."

und will nach Hause telefonieren. An der Library liegt es nicht - selbst der folgende Mini-Code bringt Excel bereits zum abschmieren:

--- schnipp ---
   Dim Excel As Variant
   Dim xlWorkbook As Variant
   Dim xlSheet As Variant
   Print "Connecting to Excel..."
   Set Excel = CreateObject( "Excel.Application" )        ' Hier schmiert es ab...


   Excel.Visible = False ' Don't display the Excel window
   Print "Opening..."
   Excel.Workbooks.Open "e:\ftos\45A.xls" ' Open the Excel file
   Print "Opened..."
--- schnipp ---

Hat jemand Erfahrung mit Excel auf dem Server oder eine Idee, woran das liegen könnte? Oder ist Excel auf dem Server generell nicht möglich?
 
Vielleicht kennt ja jemand auch andere Möglichkeiten, eine Excel Datei ohne Excel auszulesen. Ich weiß, es gibt jExcel und jXLS, aber meine Java Kenntnisse sind - nunja - verbesserungsbedürftig. Zumal der Agent natürlich in LotusScript geschrieben ist, ich also einen LS Wrapper dafür bräuchte. Komplett in Java übersteigt meine Fähigkeiten, zumal u.a. ein SAP Business connector bedient werden will...

Besten Dank im Voraus... :)

BigWim

  • Gast
Re: Excel Datei auf Server auslesen
« Antwort #1 am: 02.12.08 - 08:48:28 »
wir hatten das Problem, dass im Profilverzeichnis ein Ordner fehlt. Bei uns stellte sich das so dar, dass das automatisierte Öffnen von Excel bei einem User möglich war, bei einem anderen nicht.

Leider habe ich den Artikel in der Knowledge Base nicht mehr gefunden. Suche auf jeden Fall mit "CreateObject".

Ich meine, dass der Ordner "content.*" hieß und in der Regel versteckt ist. Auf jeden Fall im Profilverzeichnis des Users. In unseren Fall hat der User kein Schreibrecht und der Ordner konnte zur Laufzeit (?) nicht angelegt werden.

Viel Erfolg
Markus


Offline joan

  • Junior Mitglied
  • **
  • Beiträge: 60
Re: Excel Datei auf Server auslesen
« Antwort #2 am: 02.12.08 - 11:25:16 »
Hallo Markus,

Vielen Dank für den Hinweis, ich schaue mir das mal näher an. :)

Mittlerweile habe ich ein wenig tiefer im System gegraben: Das Ereignisprotokoll des Servers zeigt eine "Rejected Safe Mode Action: MS Excel" des Moduls mso.dll an. Eine Recherche im Internet führte dann zu folgender Seite: http://support.microsoft.com/kb/288367/ in der prinzipiell gesagt wird, daß MS die serverseitige Automatisierung von Office Anwendungen nicht unterstützt - aber gleichzeitig einräumt, daß es häufig notwendig ist.. ;) Offensichtlich müssen Office Applikationen erst für einen Serverbetrieb unter einem bestimmten Konto eingerichtet werden, der dazu nötige Ablauf ist in dem KB Artikel beschrieben. 

Naturgemäß habe ich ein gewisse Probleme mit der Vorstellung, daß wir einen nicht supporteten Zustand auf einem Produktivserver haben - auch wenn das gleiche Prinzip bei unserem Faxserver seit etlichen Jahren stabil läuft (er benutzt Office, um angehängte Office Dokumente in ein Fax zu konvertieren).

Also werde ich parallel weiter nach einer Möglichkeit suchen, die Excel Dateien ohne Excel auszulesen. Eventuell finde ich da ja noch eine einfache Lösung...

Offline it898ur

  • Senior Mitglied
  • ****
  • Beiträge: 478
Re: Excel Datei auf Server auslesen
« Antwort #3 am: 02.12.08 - 12:51:24 »
Hallo,

es gibt Java-Bibliotheken für den Zugriff auf Exceldateien ohne dass Excel selbst installiert sein muss. Diese Bibliotheken sind zwar nicht so mächtig wie Excel selbst, reichen aber oft um Daten aus einfachen Tabellen auszulesen.

Einfach mal "googeln" nach Excel Java und Bibliothek. Eins der Beispiele kannst Du auch hier finden:
http://sourceforge.net/projects/jexcelapi/

Gruß

André

Offline joan

  • Junior Mitglied
  • **
  • Beiträge: 60
Re: Excel Datei auf Server auslesen
« Antwort #4 am: 04.12.08 - 08:18:33 »
Hallo André und alle anderen,

Vielen Dank für die Hinweise. :) Ich werde mir die Java Möglichkeiten auf jeden Fall ansehen. Derzeit drängt aber wie immer die Zeit, daher habe ich das Ganze mit Perl umgesetzt. Falls jemand mal ein ähnliches Problem hat, hier mein Lösungsansatz:

Voraussetzung ist ein installiertes ActiveState Perl auf dem Domino Server (Perl ist bezüglich Installation auf Servern absolut unproblematisch, in jedem Fall unkritischer als ein MS Office Produkt ;) ). Benötigt wird das Modul SpreadSheat::Parse, das man mit ppm einfach nachinstalliert. Excel wird nicht benötigt.

Die als Excel Datei Attachment per Mail in die Mail-In Datenbank eingehenden Dateien werden per Agent temporär in ein Temp Verzeichnis geschrieben. Der Agent startet daraufhin ein Perl Script, dem die entsprechenden Parameter übergeben werden, an welchen Stellen der Datei die benötigten Informationen zu finden sind. Das Script liest die Daten aus der Excel-Tabelle aus und schreibt sie als Extrakt in eine Textdatei. Die wiederum wird dann vom Agenten weiter verarbeitet, in XML umgesetzt und per http.post an den SAP Business Connector gesendet.

Viele Grüße,

Joachim

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz