Thema: Delphi TList

Einzelnen Beitrag anzeigen

Benutzerbild von semo
semo

Registriert seit: 24. Apr 2004
755 Beiträge
 
Delphi 2010 Professional
 
#8

Re: TList

  Alt 21. Aug 2004, 19:42
Code:
procedure TMainForm.ladeZeilen(excelFilename: String);
var
  myExcel, Sheet: OLEVariant;
  zeile, spalte, lastRow: Integer;
  index: Integer;
  tempStringList: TStringList;
begin
  if excelFilename <> '' then
  begin
    try
      // Create Excel-OLE Object
      myExcel := CreateOleObject('Excel.Application')
    except
      ShowMessage('Excel konnte nicht gestartet werden!');
      exit
    end;

    // Excel verbergen
    myExcel.Visible := false;

    // Öffnen der gewählten Arbeitsmappe
    myExcel.Workbooks.Open(excelFilename);

     Sheet := myExcel.Workbooks[1].WorkSheets[1];
    //Sheet := myExcel.Workbooks[ExtractFileName(excelFilename)].WorkSheets[1];

    // die letzte nicht leere Zelle aktivieren
    Sheet.Cells.SpecialCells(xlCellTypeLastCell, EmptyParam).Activate;

    // ich muss jede Zeile einlesen und jede Zeile kann unterschiedlich viel Spalten haben
    // von 1 bis lastRow eine For-Schleife durchlaufen
    // lastCol pro Zeile in der Schleife ermitteln
    // --> die einzelnen Zellinhalt in ein Array packen
    // --> das Array (entspricht dem kompletten Inhalt einer Zeile) in eine Liste packen
    lastRow := myExcel.ActiveCell.Row;

    tempStringList := TStringList.Create;
    for zeile := 1 to lastRow do
    begin
      spalte := 1;
      tempStringList.Clear;
      while (myExcel.Cells[zeile, spalte].Value <> '') do
      begin
        //SetLength(ArrOfZeilen, spalte); // Arraylänge erhöhen
        //ArrOfZeilen[spalte-1] := myExcel.Cells[zeile, spalte].Value;
        index := tempStringList.Add(myExcel.Cells[zeile, spalte].Value);
        {ShowMessage('Zeile: ' + IntToStr(zeile) + #13#10 +
                    'Spalte: ' + IntToStr(spalte) + #13#10 +
                    'Value: ' + myExcel.Cells[zeile, spalte].Value + #13#10 +
                    'index in Excelzeile: ' + IntToStr(index));
        }
        Inc(spalte);
      end;
      Schilder.Add(tempStringList);
      Caption := IntToStr(Schilder.Count);
    end;

    // Quit Excel
    if not VarIsEmpty(myExcel) then
    begin
      myExcel.DisplayAlerts := False;
      myExcel.Quit;
      myExcel := Unassigned;
      Sheet  := Unassigned;
    end ;
    tempStringList.Free
  end;
end;
  Mit Zitat antworten Zitat