ich habe mir folgende Procedure zusammengebastelt:
Delphi-Quellcode:
procedure ListView2Excel(Listview:TListView; pfad:string);
var
Excel : Variant;
name,tmp : string;
i: integer;
begin
try
name:='ComPort';
Excel := CreateOleObject('Excel.Application');
Excel.Application.SheetsInNewWorkBook := 1;
Excel.Workbooks.Add;
Excel.Sheets[1].Name := name ;
Excel.ActiveSheet.PageSetup.Zoom := false;
Excel.ActiveSheet.PageSetup.FitToPagesWide := 1;
Excel.ActiveSheet.PageSetup.FitToPagesTall := 1;
Excel.ActiveSheet.Cells.Range['A2','A'+inttostr(2+Listview.Items.Count)].NumberFormat:='TT.MM.JJ hh:mm:ss,000';
Excel.ActiveSheet.Cells.Range['B2','B'+inttostr(2+Listview.Items.Count)].NumberFormat:='0,0000';
Excel.Sheets[name].Cells[1,1].value:='Zeit';
Excel.Sheets[name].Cells[1,2].value:='Bedeutung';
Excel.Sheets[name].Cells[1,3].value:='Daten';
for i := 0 to (ListView.Items.Count-1) do begin
Excel.Sheets[name].Cells[i+2,1].value := ListView.Items.Item[i].Caption; //Zeit
Excel.Sheets[name].Cells[i+2,2].value := ListView.Items.Item[i].SubItems.Strings[0]; //Bedeutung
tmp:=StringReplace(ListView.Items.Item[i].SubItems.Strings[1],',','.',[rfReplaceAll]); //. ersetzen durch , da sonst Tausendertrennung bei EXCEL
Excel.Sheets[name].Cells[i+2,3].value := tmp; //Daten
end;
try
Excel.ActiveWorkbook.SaveAs(pfad, CreateBackup := false );
except
end;
Excel.Quit;
except
application.MessageBox('Es ist ein Fehler aufgetreten.'+#10#13+'Möglicherweise ist kein EXCEL installiert!','Fehler',mb_ok+mb_iconerror);
Excel.Quit;
end;
end;
Die Formatierung als "TT.MM.JJ hh:mm:ss,000" klappt auch insoweit, dass in EXCEL bei "Zellen formatieren" dies enthalten ist. Problem ist, dass diese Formatierung nicht richtig übernommen wird, wenn ich im nachhinein bei EXCEL ein Diagramm erstellen möchte, wird nicht die korrekte Datums-Zeitangabe auf der X-Achse geliefert. Wenn ich nun in die entsprechenden Zellen "hineingehe" und wieder "heraus" (also z.B. Zelle anklicken F2 und dann ENTER), dann wird erst von EXCEL erkannt, dass es sich um Datumsangaben handelt und alles richtig formatiert. Aus diesen Daten kann ich dann auch Diagramme zeichnen lassen. Ich habe ein EXCEL-Datei auch mal angehängt. Lässt sich alles ein wenig schwierig erklären.
Ich möchte einfach nur, dass meine Daten im richtigen Format exportiert werden, ohne diese nachträglich zu bearbeiten (zum erstellen von Diagrammen).