Entwickler-Ecke

Sonstiges (Delphi) - Excel Zeile einfügen


J.Borchert - Sa 05.05.12 19:29
Titel: Excel Zeile einfügen
Ich würde gern Daten aus einer StringList in die zweite Zeile einer Exceltabelle einfügen:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
const xlCSV = $00000006;
      xlShiftDown = $FFFFEFE7;
var xls, xlw: Variant; i,j:integer;
begin if not FileExists(Form1.eAlteHotels.Text) then exit;
  xls := CreateOleObject('Excel.Application');
  try xls.DisplayAlerts := False;
    xlw := xls.WorkBooks.Open(Form1.eAlteHotels.Text);
    for i := 1 to 10 do if xls.Worksheets[i].Name = 'BUCH' then break;
    xlw.Worksheets[i].Select;
    for i := sp.Count-1 downto 0 do
      begin xlw.Rows(2).Insert(xlShiftDown, EmptyParam);
        for j := 1 to AnzStr(';', sp[i]) do xlw.Cells[2, j] := strx(';', sp[i], j);
      end;
  finally xlw.Save; xlw.Close; xlw := UnAssigned; xls.Quit; xls := UnAssigned;
  end;
end;


Bei der Zeile mit Insert passiert der Fehler. Wie muß es richtig heißen?


Nathan - Sa 05.05.12 19:40

Benötigt die Funktion Insert nicht 3 Parameter? Bei dir sehe ich allerdings nur zwei. Kann auch sein, dass ich mich irre^^

Insert(SubString, ZielString, Index);


Singlepin - Sa 05.05.12 21:30

So ganz ohne Angabe des Fehlers, rate ich mal.


Delphi-Quelltext
1:
xlw.Rows[2].Insert...                    


J.Borchert - So 06.05.12 13:34

Nathan irrt sich und Singlepin hat mich auf den rechten Weg gebracht:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
xlw.Worksheets[i].Select;
    for i := sp.Count-1 downto 0 do // die Zeilen meiner Liste von hinten an...
      begin xlw.ActiveSheet.Rows[2].Insert; // Zeile über Zeile 2 einfügen
            xlw.ActiveSheet.Rows[2].Interior.Color := clWhite; // Hintergrund weiß machen
        for j := 1 to 30 do // Inhalte übertragen aus Liste (CSV-Datei)
          xlw.ActiveSheet.Cells[2, j].value := strx(';', sp[i], j); // StrX gibt einzelne Strings der CSV-Zeile
             // Bei Excel ist's [Zeile Spalte], bei StringGrid [Spalte, Zeile] !!!
      end;


Danke für Eure Anregungen!

Habe auch noch hier abgekupfert:
http://www.swissdelphicenter.ch/de/showcode.php?id=156
http://www.delphi-treff.de/tipps/comoledde/andere-office-anwendungen/excel-mit-ole-automation-steuern/