Seite 1 von 2
Excel-Zellen auslesen ohne Comate?
Verfasst: 16.02.2010 21:02
von Crawler
Ich habe den Auftrag bekommen, ein kleines Tool zu programmieren. Und schon fangen die ersten Probleme an...
Es geht im Prinzip darum, die Daten einer Excel-Tabelle (xls-Dokument) auszulesen und in geänderter Form in eine XML-Datei zu schreiben. Diese Vorgabedatei als Exceldokument besteht bereits, diese will ich nun Zellenweise erfassen. Nach etwas Recherche geht das mit Comate, allerdings brauche ich im Prinzip nur diese eine Funktion "GibMirDenZellenwertDerZelle (Zeile.i, Spalte.i)"

Geht das eleganter oder ist Comate wirklich das Mittel zum Zweck? Ich habe zwar mehrere Excel-Libraries gefunden, diese beschäftigen sich eher mit dem Schreiben von Excel-Dateien.
Für den Schubser in die richtige Richtung wäre ich sehr verbunden.
MfG Crawler
Re: Excel-Zellen auslesen ohne Comate?
Verfasst: 16.02.2010 21:23
von Kiffi
einfacher als mit COMate wirst Du das in PB nicht bewerkstelligen
können. Dafür eignen sich andere Programmiersprachen besser
(beispielsweise VBS / VBA / VB6 / VB.Net, AutoIt, GFABasic, etc.)
Grüße ... Kiffi
Re: Excel-Zellen auslesen ohne Comate?
Verfasst: 16.02.2010 21:59
von Little John
Hier ist Code von einem
Datenbank-Anzeiger für Access-, Excel-, Dbase- und Text-Dateien ohne COMate. Ob das im vorliegenden Fall besser geeignet ist als COMate weiß ich nicht.
Anspruchsvolle Aufgaben dieser Art mit PB zu bewältigen, wird ohne COMate wohl schwierig.
Gruß, Little John
Re: Excel-Zellen auslesen ohne Comate?
Verfasst: 16.02.2010 23:41
von Crawler
Okay, dann schaue ich mir mal COMate an. Vielen Dank fürs Mitdenken!
Mir schien das angesprochene COMate zu "mächtig" für mein kleines Tool, aber wenn kein (einfacherer) Weg daran vorbeiführt, dann soll es eben so sein.
Re: Excel-Zellen auslesen ohne Comate?
Verfasst: 16.02.2010 23:43
von HemSA
Hallo Crawler,
ich kenne zwar nicht den COMate, von dem her kann ich nichts darüber sagen was den Aufwand angeht. Ich selbst benutze den DispHelper. Der ist zwar schon etwas älter, aber für mich leistet er gute Dienste. Man kann da locker Inhalte von Zellen auslesen und sonst noch andere Sachen machen. Für ein neues Projekt passe ich nur die vorhandenen Programme an, das ist auch der Grund warum ich mich noch nicht mit COMate beschäftigt habe.
Einen Hacken hat die Sache allerdings, es geht nur bis PB 4.02, danach meckert der Compiler wegen der Includedatei "VariantHelper_Include.pb". Das könnte man vielleicht auch noch anpassen - aber warum die Arbeit - ich hab ja mehrere PB Versionen auf dem Rechner.
Das nur zur Info, für einen Neuanfang würde sich wahrscheinlich das einmalige hineinknien in COMate eher lohnen.
Re: Excel-Zellen auslesen ohne Comate?
Verfasst: 17.02.2010 14:43
von Crawler
Nachdem ich mih nun ein bisschen eingelesen und ein paar Besipielscodes getestet habe, stehe ich nun wieder ganz am Anfang. Soviel ich bisher entnommen habe, setzt COMate ja vorraus, dass ich Excel installiert habe. Das ist auf meinem Rechner jedoch nicht der Fall, ich habe nur die xls-Datei vorliegen...
Der von Little John verlinkte Code läuft zwar ohne Fehlermeldung, es auch der Requester wird dargestellt. Wähle ich nun meine xls-Datei aus, schließt sich das Programm, ohne weitere Anzeige des Inhaltes der Datei.
Re: Excel-Zellen auslesen ohne Comate?
Verfasst: 17.02.2010 14:57
von bobobo
vermutlich reicht ein installierter excel-viewer aus. ¿?¿?¿?
Re: Excel-Zellen auslesen ohne Comate?
Verfasst: 17.02.2010 15:10
von Little John
Crawler hat geschrieben:Der von Little John verlinkte Code läuft zwar ohne Fehlermeldung, es auch der Requester wird dargestellt. Wähle ich nun meine xls-Datei aus, schließt sich das Programm, ohne weitere Anzeige des Inhaltes der Datei.
Nur 'ne Idee: Vielleicht liegt's am Format der Exel-Datei, denn das ist ja von einer Excel-Version zur anderen z.T. durchaus unterschiedlich. Soweit ich sehe ist in dem von mir verlinkten Code leider nicht angegeben, von welchen Excel-Versionen die Dateien erzeugt wurden, mit denen er erfolgreich getestet wurde.
Hab's hier gerade mal getestet: Eine von Excel 2003 erzeugte Datei wird von dem Code im Großen und Ganzen richtig angezeigt (allerdings wird in der 1. Zeile F9, F8, F7 usw. angezeigt, obwohl das nicht in der Datei steht).
Gruß, Little John
Re: Excel-Zellen auslesen ohne Comate?
Verfasst: 17.02.2010 15:18
von Kiffi
Crawler hat geschrieben:Soviel ich bisher entnommen habe, setzt COMate ja vorraus, dass ich Excel installiert habe.
nicht ganz korrekt. Wenn Du mit COMate ein Objekt vom Typ Excel erstellen willst (CreateObject), dann
musst Du Excel auf Deinem Rechner (bzw. da, wo der Code läuft) installiert haben.
Crawler hat geschrieben:Das ist auf meinem Rechner jedoch nicht der Fall, ich habe nur die xls-Datei vorliegen...
wie gut, dass Du uns das erst jetzt erzählst...
Wie dem auch sei: Eine Excel-Datei lässt sich auch mit beispielsweise einem ADO-Objekt auslesen.
Dann wird die XLS genauso gehandhabt wie eine Datenbank (genauso wie mit dem von Little John verwiesenen
Code von mpz; nur eben nicht via ODBC). Und ADO sollte auf Deinem Rechner aller Wahrscheinlichkeit nach
installiert sein.
Grüße ... Kiffi
Re: Excel-Zellen auslesen ohne Comate?
Verfasst: 17.02.2010 16:21
von Crawler
Ich dachte anfangs, dass ich mit einem GetObject auch ohne Excel auskommen würde, das war dann wohl ein Gedankenfehler. Tatsächlich ist hier nur OpenOffice installiert, mit dem ich zwar auch im Excel97/2000/XP-Format speichern kann, diese Datei wird aber nicht vom verlinkten Code dargestellt.
Kiffi hat geschrieben:wie gut, dass Du uns das erst jetzt erzählst...
Habe nie was anderes behauptet...

Aber es ist nicht ungewöhnlich dass auf einem "Entwicklungsrechner" andere Software installiert ist als auf einem "Anwendungsrechner".
Aber es tut mir echt leid, dass es zu Missverständnissen kam, sorry.