Thema: Delphi Excel Automation

Einzelnen Beitrag anzeigen

Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#4

AW: Excel Automation

  Alt 13. Dez 2011, 15:23
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
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat