Entwickler-Ecke
Dateizugriff - Daten aus Excel in StringList laden
MarioL - So 19.12.10 18:08
Titel: Daten aus Excel in StringList laden
Hallo, ich möchte eine ComboBox und 3 StringListen mit Daten aus einer Excel-Datei füllen und habe folgende Frage:
wie kann ich ein bestimmtes Sheet auswählen ?
und wie kann ich die letzte Zeile einer bestimmten Spalte (B) ermitteln ?
hier mein code:
(Teile davon sind von 'DBR Delphi-Ecke'
http://www.s170867368.online.de/delphi/lastrow.php)
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37:
| var xcl : OleVariant; sl1, sl2, sl3 : TStringlist;
const xlCellTypeLastCell = 11;
procedure Laden(Datei: string; list: TStrings); var i, r: integer; begin list.clear; xcl := createOleObject('Excel.Application'); xcl.Workbooks.Open(Datei); r := xcl.Cells.SpecialCells(xlCellTypeLastCell, EmptyParam).Row; for i := 3 to r do begin list.add(xcl.range['B' + inttostr(i)]); sl1.add(xcl.range['C' + inttostr(i)]); end; xcl.quit; end;
procedure TForm1.Button1Click(Sender: TObject); var Datei: string; begin if OpenDialog1.Execute then begin sl1 := TStringlist.create; Datei := OpenDialog1.FileName; Laden(Datei, ComboBox1.items); ComboBox1.ItemIndex := 0; Edit1.Text := sl1.Strings[0]; end; end; |
MfG Mario
Moderiert von
Martok: Delphi-Tags gesetzt
MarioL - So 19.12.10 18:57
Hallo, Problem 1 konnte ich lösen.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| procedure Laden(Datei: string; list: TStrings); var i, r: integer; s, x : string; begin list.clear; xcl := createOleObject('Excel.Application'); xcl.Workbooks.Open(Datei); for i := 1 to xcl.Sheets.Count do begin s := s + chr(13) + IntToStr(i) + ' - ' +xcl.Sheets[i].name end; InputQuery('Tabelle auswählen', s, x); r := xcl.Sheets[StrToInt(x)].Cells.SpecialCells(xlCellTypeLastCell, EmptyParam).Row; for i := 3 to r do begin list.add(xcl.Sheets[StrToInt(x)].range['B' + inttostr(i)]); sl1.add(xcl.Sheets[StrToInt(x)].range['C' + inttostr(i)]); end; xcl.quit; end; |
MfG Mario
Moderiert von
Martok: Delphi-Tags gesetzt
Martok - So 19.12.10 19:12
Hallo!
Bitte verwende für Quellcode die entsprechenden [delphi
]-Tags, dann wird er "schöner" dargestellt als im Fließtext. Beispiel:
Quelltext
1:
| <span class="inlineSyntax"><span class="codecomment">{PROTECTTAGd6f0893982771bbe9faced57b60e8924}</span></span> |
Wird:
Ich habe das mal für dich gemacht, also für die Zukunft dann ;)
Viele Grüße,
Martok
Chemiker - So 19.12.10 22:50
Hallo MarioL,
hat jetzt nicht direkt was mit Deinem Problem zu tun, aber nach den:
sollte unbedingt noch ein:
folgen. Sonst bleibt die Excel-Instanz weiter im Speicher. Kann man schön beobachten, wenn man nach dem Schließen in den Taskmanger schaut.
Bis bald Chemiker
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!