Hallo,
ich weiss nicht was das Tutorial empfiehlt. Ich empfehle die Daten aus
einem StringGrid über ein variantes Array nach Excel zu schieben. Geht
erheblicher schneller als jede Zelle einzeln anzusprechen.
Delphi-Quellcode:
procedure TForm1.CopyToExcel;
var
Tmp : TStringList;
ArrV : Variant; // Das ist das variante Array
Row : Integer;
Col : Integer;
Cell : Range;
begin
Screen.Cursor:=crHourGlass;
Tmp:=tStringList.Create;
OpenExcel;
Try
Tmp.LoadFromFile(FApplicationPath+'Muster.txt');
ArrV:=VarArrayCreate([0,Tmp.Count-1,0,2],varVariant); // Größe der Array festlegen
VarArrayLock(ArrV);
For Row:=0 to TMp.Count-1 do // Daten ins Array übertragen
begin // Hier könnte man Daten aus einem StringGrid
For Col:=1 to 3 do // ins Array schieben
ArrV[Row,Col-1]:=GetToken(Tmp[Row],#9,Col);
end;
VarArrayUnLock(ArrV);
ExcelApplication.Workbooks.Open(FApplicationPath+'Test.xls',EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,EmptyParam,
EmptyParam,FLCID);
ExcelWorkbook.ConnectTo(ExcelApplication.ActiveWorkbook);
ExcelWorksheet.ConnectTo(ExcelWorkbook.Sheets.Item['Tabelle1'] as _WorkSheet);
Cell:=ExcelWorksheet.Cells.Range_['A1','A1'];
ExcelWorksheet.Range[Cell,Cell.Offset[Tmp.Count-1,2]].Value:=ArrV; // Array nach Excel schieben
ExcelWorkbook.Save;
ExcelWorkbook.Close(False);
Finally
CloseExcel;
Tmp.Free;
Screen.Cursor:=crDefault;
end;
end;
Die EXE in der Anlage öffnet die Datei Muster.txt und schiebt die ca. 1420 Datensätze in
die Datei Test.xls.
[Edit]
habe gerade erst gelesen, dass die Exceltabelle ins StringGrid soll.
Ob es reicht in meinem vorgeschlagenen Source die Richtung zu ändern müsste man ausprobieren. [/Edit]