Vielleicht hilft Dir das weiter:
(ist alles anderes als optimal aber lauffähig)
Delphi-Quellcode:
(* Liest Exceldatei *)
function LIESEXCEL(const datei:string;const sheet:integer;
var startzeile,endzeile,startspalte,endspalte:integer;
const fontinfo:boolean=false;
const colorinfo:boolean=false):tstringlist;
const
DELIMMITERLINE='........';
var
maxZeil,
maxSpal : integer;
ll : tstringlist;
i,j : integer;
excel : variant;
zelle : ansistring; {!! shortstring=Begrenzung ; kann auch ansistring sein!}
begin
ll:=tstringlist.Create;
maxZeil:=0;
maxSpal:=0;
try
excel:=createoleobject('EXCEL.APPLICATION');
except
showmessage('Excel kann nicht gestartet werden!');
exit;
end;
excel.visible:=true; { visible nur für test-zwecke }
excel.workbooks.Open(Filename:=datei);
excel.activeworkbook.sheets[sheet].activate; { 1. Worksheet}
{-- Excel zählt von 1..x }
maxZeil:=excel.activesheet.usedrange.rows.count;
maxSpal:=excel.activesheet.usedrange.columns.count;
if StartZeile=0 then Startzeile:=1;
if StartSpalte=0 then StartSpalte:=1;
{---------------------}
if endZeile>maxzeil then endZeile:=maxZeil;
if endSpalte>maxspal then endSpalte:=maxSpal;
for i:=startZeile to endZeile do begin
for j:=startSpalte to endSpalte do begin
zelle:=excel.activesheet.cells[i,j]; { Lese Wert }
excel.activesheet.cells[i+1,j+1].select;
if fontinfo then
zelle:=zelle+'|'+excel.selection.font.name;
if excel.activesheet.cells[i+1,j+1].font.Strikethrough=True then Zelle:=zelle+'(gestrichen)';
if colorinfo then
zelle:=zelle+'Farbe:'+inttostr(excel.activesheet.cells[i+1,j+1].font.colorindex);
ll.Add(zelle);
end;
ll.add(DELIMITERLINE);
end;
excel.ActiveWorkbook.Close;
excel.quit;
result:=ll;
end;
Gruß
K-H
Das sieht schon deutlich besser aus.
Eine kleine Sache wäre da noch:
Bei deinem Beispiel fragt Excel am Schluss immer ob die Datei gespeichert werden soll. Kann ich diese Meldung irgendwie unterdrücken?