Einzelnen Beitrag anzeigen

Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#4

Re: Excel-Datei in TStringGrid importieren

  Alt 28. Mai 2004, 10:03
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]
Angehängte Dateien
Dateityp: zip zip_163.zip (198,5 KB, 23x aufgerufen)
I come from outer space to save the human race
  Mit Zitat antworten Zitat