Aus Excel Datei einlesen?
Aus Excel Datei einlesen?
Hallo Leute... ich habe ein Problem...
bevor ich mich hier im Forum angemeldet habe, habe ich im Internet recherchiert, aber leider versteh ich von dem nicht viel, da ich ein totaler Anfänger bin...
Ich will im Pascal Zahlen aus einer Datei einlesen lassen... bevor ich so weit gekommen bin, habe ich erst einmal versucht eine txt Datei einlesen zu lassen, was auch funktioniert hat...
hier ein Bild dazu:
Danach habe ich versucht Zahlen aus Excel Datei einlesen zu lassen, habe es aber nicht hinbekommen. Ich dachte, dass es eigentlich genau gleich sein müsste wie bei txt Dateien, aber ist anscheinend nicht der Fall... ich habe im Excel eine Tabelle erstellt mit Zahlen und das soll Pascal einlesen, aber ich habe das leider nicht hinbekommen ~ und das kommt dabei raus, hier ein Bild dazu:
Ist das doch komplizierter, als ich dachte oder habt ihr vllt andere Vorschläge als Excel? Ich will nämlich eine Tabelle machen mit Variablen, die mit Zahlen definiert sind... Beispiel: A= 46; B= 57 etc und diese Zahlen, dann in eine Tabelle einbringen... Pascal sollte dann diese Zahlen aus der Tabelle einlesen, aber was mache ich falsch?
bevor ich mich hier im Forum angemeldet habe, habe ich im Internet recherchiert, aber leider versteh ich von dem nicht viel, da ich ein totaler Anfänger bin...
Ich will im Pascal Zahlen aus einer Datei einlesen lassen... bevor ich so weit gekommen bin, habe ich erst einmal versucht eine txt Datei einlesen zu lassen, was auch funktioniert hat...
hier ein Bild dazu:
Danach habe ich versucht Zahlen aus Excel Datei einlesen zu lassen, habe es aber nicht hinbekommen. Ich dachte, dass es eigentlich genau gleich sein müsste wie bei txt Dateien, aber ist anscheinend nicht der Fall... ich habe im Excel eine Tabelle erstellt mit Zahlen und das soll Pascal einlesen, aber ich habe das leider nicht hinbekommen ~ und das kommt dabei raus, hier ein Bild dazu:
Ist das doch komplizierter, als ich dachte oder habt ihr vllt andere Vorschläge als Excel? Ich will nämlich eine Tabelle machen mit Variablen, die mit Zahlen definiert sind... Beispiel: A= 46; B= 57 etc und diese Zahlen, dann in eine Tabelle einbringen... Pascal sollte dann diese Zahlen aus der Tabelle einlesen, aber was mache ich falsch?
-
- Beiträge: 6079
- Registriert: Do 21. Sep 2006, 07:51
- OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
- CPU-Target: AVR,ARM,x86(-64)
- Wohnort: Dessau
- Kontaktdaten:
Re: Aus Excel Datei einlesen?
Das Excel Dateiformat lässt sich nicht so einfach wie ne Textdatei lesen.
damit sollts gehn:
http://wiki.freepascal.org/FPSpreadsheet/de
damit sollts gehn:
http://wiki.freepascal.org/FPSpreadsheet/de
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/
Re: Aus Excel Datei einlesen?
Danke sehr =)
Darüber hatte ich auch schon etwas gelesen, aber nur wenig...
anscheinend ist das die Lösung, werde mich intersiver damit beschäftigen
MfG, tuete
Darüber hatte ich auch schon etwas gelesen, aber nur wenig...
anscheinend ist das die Lösung, werde mich intersiver damit beschäftigen
MfG, tuete
-
- Beiträge: 323
- Registriert: Di 12. Apr 2011, 13:21
- OS, Lazarus, FPC: WinXP + VMWare Player mit Fedora14, L 1.1, FPC 2.7.1
- CPU-Target: 1core 1,8GHz 32Bit
- Wohnort: Fürth
- Kontaktdaten:
Re: Aus Excel Datei einlesen?
Hi,
mir war es bisher zu mühsam, mich in die Excel Schnittstelle einzulesen. Ich habe mir immer mit Textdateien beholfen, welche die Spalten mit Tabulator getrennt haben. Das schöne daran ist, dass das zu Excel kompatibel ist.
Heiner
mir war es bisher zu mühsam, mich in die Excel Schnittstelle einzulesen. Ich habe mir immer mit Textdateien beholfen, welche die Spalten mit Tabulator getrennt haben. Das schöne daran ist, dass das zu Excel kompatibel ist.
Heiner
Re: Aus Excel Datei einlesen?
Hallo, bin jetzt so einigermaßen weitergekommen... musste viel recherchieren, um überhaupt so weit kommen zu können... habe es geschafft, dass Lazarus die fpspreadsheet und fpspreadsheet visual Komponenten installiert und ich kann Sie jetzt auch benutzen.... das allein war schon eine Hürde
jetzt habe ich ein weiteres Problem, im Package von fpspreadsheet waren Beispiele drin, wie man Excel Dateien einliest... einmal das Programm an sich und einmal eine Beispiel- Excel- Datei, damit das Programm, was zum einlesen hat...
ich habe das Programm kopiert und genau so übernommen, außer dass ich den Excel-Datei-Namen, dass das Programm einlesen soll, geändert habe, da ich ja selbst eine andere Exceldatei schon vorher kreiert hatte (Test12) und den Programmnamen habe ich auch geändert (Excel_einlesenFpspreadsheetProblem)... dann habe ich auf kompilieren geklickt, was das Programm auch versucht hat zu machen, jedoch bleibt das Programm immer hängen nachdem ich auf kompilieren klicke und dann steht unten im kleinen Fehlermelde-Fenster dieses hier: 'Linking Excel_einlesenFpspreadsheetProblem.exe'... das Programm bleibt dann hängen und nichts weiter passiert, weswegen ich das programm dann durch zwingen schließen muss...
hier einmal das Programm:
und hier nachdem ich auf kompilieren klicke: wo liegt denn jetzt das Problem an dem Programm, denn wenn ich das Beispielprogramm aus dem fpspreadsheet- package mit lazarus öffne und kompiliere, funktioniert es, es öffnet die Beispieldatei von fpspreadsheet, aber wenn ich meine eigene Datei öffnen will, funktioniert es nicht ~ warum?
Übrigens habe ich zwar eine eigene Excel-Datei, aber ich habe genau die Zeilen und Spalten mit Zahlen gefüllt, wie die Beispieldatei aus dem fpspreadsheet package... das habe ich gemacht, weil ich prüfen und ausprobieren wollte und dadurch auch mehr lernen, aber das Programm will meine Exceldatei einfach nicht einlesen, weil es immer hängen bleibt
Bitte um Hilfe

jetzt habe ich ein weiteres Problem, im Package von fpspreadsheet waren Beispiele drin, wie man Excel Dateien einliest... einmal das Programm an sich und einmal eine Beispiel- Excel- Datei, damit das Programm, was zum einlesen hat...
ich habe das Programm kopiert und genau so übernommen, außer dass ich den Excel-Datei-Namen, dass das Programm einlesen soll, geändert habe, da ich ja selbst eine andere Exceldatei schon vorher kreiert hatte (Test12) und den Programmnamen habe ich auch geändert (Excel_einlesenFpspreadsheetProblem)... dann habe ich auf kompilieren geklickt, was das Programm auch versucht hat zu machen, jedoch bleibt das Programm immer hängen nachdem ich auf kompilieren klicke und dann steht unten im kleinen Fehlermelde-Fenster dieses hier: 'Linking Excel_einlesenFpspreadsheetProblem.exe'... das Programm bleibt dann hängen und nichts weiter passiert, weswegen ich das programm dann durch zwingen schließen muss...
hier einmal das Programm:
und hier nachdem ich auf kompilieren klicke: wo liegt denn jetzt das Problem an dem Programm, denn wenn ich das Beispielprogramm aus dem fpspreadsheet- package mit lazarus öffne und kompiliere, funktioniert es, es öffnet die Beispieldatei von fpspreadsheet, aber wenn ich meine eigene Datei öffnen will, funktioniert es nicht ~ warum?
Übrigens habe ich zwar eine eigene Excel-Datei, aber ich habe genau die Zeilen und Spalten mit Zahlen gefüllt, wie die Beispieldatei aus dem fpspreadsheet package... das habe ich gemacht, weil ich prüfen und ausprobieren wollte und dadurch auch mehr lernen, aber das Programm will meine Exceldatei einfach nicht einlesen, weil es immer hängen bleibt

Bitte um Hilfe
-
- Beiträge: 90
- Registriert: Fr 2. Nov 2007, 13:32
- OS, Lazarus, FPC: Win (L 1.0 FPC 2.6.0)
- CPU-Target: 32Bit
- Wohnort: Ulm
Re: Aus Excel Datei einlesen?
Excel97-2003 Dateien mit "sfExcel8" einlesen. Die passende Unit dazu (xlsBiff8) hast Du ja schon eingebunden.
Bzgl. dem Linker-Problem vermute ich als Ursache den Umlaut "ü" im Verzeichnispfad - probiers mal in einem anderen Ordner zu kompilieren.
Edit: Übrigens eine Alternative wäre das freie ODS-Format. Einzulesen mit Hilfe der Unit "fpsopendocument" und der Typenangabe "sfOpenDocument"
Bzgl. dem Linker-Problem vermute ich als Ursache den Umlaut "ü" im Verzeichnispfad - probiers mal in einem anderen Ordner zu kompilieren.
Edit: Übrigens eine Alternative wäre das freie ODS-Format. Einzulesen mit Hilfe der Unit "fpsopendocument" und der Typenangabe "sfOpenDocument"
Re: Aus Excel Datei einlesen?
Dankeschön Thomas =)
Ich habe es jetzt geschafft eine Excel- Datei per Lazarus zu schreiben und Sie wieder einzulesen... deine Hinweise haben mir auch sehr geholfen... vielen vielen Dank... ich werde demnächst das Programm hier hochladen, damit die Leute, die dasselbe Problem haben vllt Hilfe dadurch bekommen...
MfG, tuete
Ich habe es jetzt geschafft eine Excel- Datei per Lazarus zu schreiben und Sie wieder einzulesen... deine Hinweise haben mir auch sehr geholfen... vielen vielen Dank... ich werde demnächst das Programm hier hochladen, damit die Leute, die dasselbe Problem haben vllt Hilfe dadurch bekommen...
MfG, tuete
Re: Aus Excel Datei einlesen?
Hallo Leute...
leider bin ich auf das nächste Problem gestoßen... ich zeige euch erst einmal die Programme
hier das Programm zum Schreiben einer Exzel Datei:
hier das Programm zum Lesen der geschriebenen Exzeldatei:
so siehts aus, wenn ich auf kompilieren klicke:
Was ich jetzt machen will ist jedoch, dass ich A1:= 40 definiere, sodass ich das im weiteren Programm benutzen und darauf zurückgreifen kann. Ich habe zum Beispiel im weiteren Verlauf des Programmes diese Gleichung: (A1:= A1*y) und im Moment habe ich diese Daten (A1= 40; A2= 55; A3= 24; A4= 56) im Quelltexteditor eingegeben, sodass das Programm auf die Daten zugreifen kann und Sie in die Gleichung einsetzen kann, aber ich will diese Daten aus dem Quelltexteditor löschen und diese Daten aus einer Excel Datei einlesen... jetzt habe ich zwar das Programm zum Lesen einer Exceldatei geschrieben, aber wie mache ich das so, das ich A1:= 40 definiere?
wenn ich jetzt beim Schreiben des Spreadsheets die dritte Spalte der Matrix folgendermaßen ändern würde,
MyWorksheet.WriteUTF8Text( 0, 0, 'A1:=40');
MyWorksheet.WriteUTF8Text( 2, 0, 'A2:=55');
MyWorksheet.WriteUTF8Text( 4, 0, 'A3:=24');
MyWorksheet.WriteUTF8Text( 6, 0, 'A4:=56');
dann würde der diese Daten ja lesen ohne zu gucken, was das überhaupt ist, wegen den Apostrophzeichen (' '), dann wäre das ja keine Definition...
Dann habe ich mir überlegt, ich könnte das vllt mit 'WriteFormula' machen, aber damit kann man ja nur addieren, subtrahieren etc (fekCell, fekAdd, fekSub, fekDiv, fekMul, fekOpSUM)...
Kennt ihr da vllt einen Weg, wie ich das machen könnte oder kann man das überhaupt machen? Ich will ja die Daten aus Excel einlesen, nicht nur einfach lesen, aber das habe ich bisher nicht erreicht... Habe mir das Buch 'Lazarus Klassenbibliotheken und IDE' gekauft, aber da steht nichts zu 'Aus Exceldatei einlesen'... habe aus dem Buch etwas zu SQL gelesen, aber da ich jetzt mit spreadsheet angefangen habe und mich da schon ein bisschen eingelesen und mich damit beschäftigt habe, kenne ich mich damit besser aus als SQL, deswegen würde ich lieber mit spreadsheet weitermachen, als etwas mit Neuem anzufangen...
Ich wäre euch sehr dankbar, wenn ihr mir weiterhelfen könntet...
leider bin ich auf das nächste Problem gestoßen... ich zeige euch erst einmal die Programme
hier das Programm zum Schreiben einer Exzel Datei:
hier das Programm zum Lesen der geschriebenen Exzeldatei:
so siehts aus, wenn ich auf kompilieren klicke:
Was ich jetzt machen will ist jedoch, dass ich A1:= 40 definiere, sodass ich das im weiteren Programm benutzen und darauf zurückgreifen kann. Ich habe zum Beispiel im weiteren Verlauf des Programmes diese Gleichung: (A1:= A1*y) und im Moment habe ich diese Daten (A1= 40; A2= 55; A3= 24; A4= 56) im Quelltexteditor eingegeben, sodass das Programm auf die Daten zugreifen kann und Sie in die Gleichung einsetzen kann, aber ich will diese Daten aus dem Quelltexteditor löschen und diese Daten aus einer Excel Datei einlesen... jetzt habe ich zwar das Programm zum Lesen einer Exceldatei geschrieben, aber wie mache ich das so, das ich A1:= 40 definiere?
wenn ich jetzt beim Schreiben des Spreadsheets die dritte Spalte der Matrix folgendermaßen ändern würde,
MyWorksheet.WriteUTF8Text( 0, 0, 'A1:=40');
MyWorksheet.WriteUTF8Text( 2, 0, 'A2:=55');
MyWorksheet.WriteUTF8Text( 4, 0, 'A3:=24');
MyWorksheet.WriteUTF8Text( 6, 0, 'A4:=56');
dann würde der diese Daten ja lesen ohne zu gucken, was das überhaupt ist, wegen den Apostrophzeichen (' '), dann wäre das ja keine Definition...
Dann habe ich mir überlegt, ich könnte das vllt mit 'WriteFormula' machen, aber damit kann man ja nur addieren, subtrahieren etc (fekCell, fekAdd, fekSub, fekDiv, fekMul, fekOpSUM)...
Kennt ihr da vllt einen Weg, wie ich das machen könnte oder kann man das überhaupt machen? Ich will ja die Daten aus Excel einlesen, nicht nur einfach lesen, aber das habe ich bisher nicht erreicht... Habe mir das Buch 'Lazarus Klassenbibliotheken und IDE' gekauft, aber da steht nichts zu 'Aus Exceldatei einlesen'... habe aus dem Buch etwas zu SQL gelesen, aber da ich jetzt mit spreadsheet angefangen habe und mich da schon ein bisschen eingelesen und mich damit beschäftigt habe, kenne ich mich damit besser aus als SQL, deswegen würde ich lieber mit spreadsheet weitermachen, als etwas mit Neuem anzufangen...
Ich wäre euch sehr dankbar, wenn ihr mir weiterhelfen könntet...
-
- Beiträge: 308
- Registriert: Do 9. Apr 2009, 10:10
- OS, Lazarus, FPC: Ubuntu 9.10 (L 0.9.28 FPC 2.2.4)
- CPU-Target: 32Bit
- Wohnort: 785..
Re: Aus Excel Datei einlesen?
Dafür wurden meines Wissens Variablen erfunden, denen man was zuweisen kann.tuete hat geschrieben: Was ich jetzt machen will ist jedoch, dass ich A1:= 40 definiere, sodass ich das im weiteren Programm benutzen und darauf zurückgreifen kann.
Wenn du einen neuen Text liest, weisst auch nicht schon vorher was drinsteht....... ansonsten wär lesen ja auch unnötig....tuete hat geschrieben:dann würde der diese Daten ja lesen ohne zu gucken, was das überhaupt ist, wegen den Apostrophzeichen (' '), dann wäre das ja keine Definition...
Die Prüfung der gelesenen Daten wirst wahrscheinlich selber programmieren müssen. (oder Sicherstellen, dass nix falsches an der Stelle stehen kann...)
Ubuntu 9.10 (L 0.9.28 FPC 2.4.x)
-
- Beiträge: 90
- Registriert: Fr 2. Nov 2007, 13:32
- OS, Lazarus, FPC: Win (L 1.0 FPC 2.6.0)
- CPU-Target: 32Bit
- Wohnort: Ulm
Re: Aus Excel Datei einlesen?
Ich hab's nicht ganz verstanden.
Du kannst Zahlen mit WriteNumber und Texte mit WriteUTF8Text in jede beliebige Excel-Zelle hinein schreiben.
Was Du wahrscheinlich suchst ist:usw.
Wenn es sehr viele Variablen A1,A2,A3,.. werden, dann am besten mit Feldern (z.B ein "array of Double") und Schleifen arbeiten.
ein kleiner Tipp am Rande: den Quellcode am besten als Text im Forumskommentar einfügen, markieren, und dann Freepascal/Lazarus als Highlighter auswählen
-
Du kannst Zahlen mit WriteNumber und Texte mit WriteUTF8Text in jede beliebige Excel-Zelle hinein schreiben.
Was Du wahrscheinlich suchst ist:
Code: Alles auswählen
var A1,A2 : Double;
...
A1 := MyWorksheet.ReadAsNumber(0,1);
A2 := MyWorksheet.ReasAsNumber(2,1);
Wenn es sehr viele Variablen A1,A2,A3,.. werden, dann am besten mit Feldern (z.B ein "array of Double") und Schleifen arbeiten.
ein kleiner Tipp am Rande: den Quellcode am besten als Text im Forumskommentar einfügen, markieren, und dann Freepascal/Lazarus als Highlighter auswählen
-
Re: Aus Excel Datei einlesen?
Achsooo... ich glaube das war auch mein Problem... ich wollte nämlich nicht nur, dass Lazarus eine Zelle aus Excel einfach nur im Debugger-Fenster anzeigt, sondern, dass ich halt auf die Daten aus Excel zugreifen und im weiteren Verlauf meines Programms benutzen kann und das funktioniert ja nur, wenn ich es definiere...
ich meine, ich will auf bestimmte Excelzelle/feld zugreifen und die dann im weiteren Verlauf meines Programms benutzen, sodass ich die aus Excel gelesene Daten auch ins Programm einbinden kann, dass z.B meine Gleichung ~A1:=(A1*y)~ die aus Excel gelesene Daten auch erkennt und Sie dann in die Gleichung einsetzt...
was ich jedoch bisher gemacht habe, war, dass ich mit fpspreadsheet eine Exceldatei erstellt habe und die Daten einfach nur als Zeichen im Debugger-Fenster gezeigt habe...
jetzt wollte ich mit der GetCell Methode versuchen.... geht das denn?
Aber erst einmal werde ich dein Vorschlag ausprobieren... danke Thomas
ich meine, ich will auf bestimmte Excelzelle/feld zugreifen und die dann im weiteren Verlauf meines Programms benutzen, sodass ich die aus Excel gelesene Daten auch ins Programm einbinden kann, dass z.B meine Gleichung ~A1:=(A1*y)~ die aus Excel gelesene Daten auch erkennt und Sie dann in die Gleichung einsetzt...
was ich jedoch bisher gemacht habe, war, dass ich mit fpspreadsheet eine Exceldatei erstellt habe und die Daten einfach nur als Zeichen im Debugger-Fenster gezeigt habe...
jetzt wollte ich mit der GetCell Methode versuchen.... geht das denn?
Aber erst einmal werde ich dein Vorschlag ausprobieren... danke Thomas

Re: Aus Excel Datei einlesen?
Thomaaaaaaaaaaasss
ich daaaaaaaaaaaaaaankeeeeeeeee dir...
das was du mir vorgeschlagen hast, war genau das wonach ich gesucht habe.... vielen vielen Dank...
werde das Programm noch einmal demnächst hier hochladen als Textdatei
Aber erst einmal muss ich wieder in die Vorlesung
MfG, Tülin

das was du mir vorgeschlagen hast, war genau das wonach ich gesucht habe.... vielen vielen Dank...
werde das Programm noch einmal demnächst hier hochladen als Textdatei
Aber erst einmal muss ich wieder in die Vorlesung
MfG, Tülin
-
- Beiträge: 90
- Registriert: Fr 2. Nov 2007, 13:32
- OS, Lazarus, FPC: Win (L 1.0 FPC 2.6.0)
- CPU-Target: 32Bit
- Wohnort: Ulm
Re: Aus Excel Datei einlesen?
gern geschehen
übrigens, Herzlich Willkommen im Forum!
übrigens, Herzlich Willkommen im Forum!