Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Excel-Datei in TStringGrid importieren (https://www.delphipraxis.net/23063-excel-datei-tstringgrid-importieren.html)

allarich 28. Mai 2004 08:50


Excel-Datei in TStringGrid importieren
 
Hallo Forumsmitglieder,

wer kann helfen ?

Habe Quellcode von Tutorial übernommen;kann Anwendung compilieren und starten.
Wenn ich dann die Excel-Datei importieren möchte,stoppt Programm mit der Meldung:
Project Project1.exe raised exception class EOleError with message
'Method' Aktivate 'not supportrd by automation object'. Process stopped.

Im Quellcode wird per Zeiger folgende Zeile markiert:
Sheet.Cells.SpecialCells(xlCellTypeLastCell,EmptyP aram).Aktivate;//Get the value of the last row

Wo liegt der Fehler ? :cry:

MfG
allarich

Jens Schumann 28. Mai 2004 08:52

Re: Excel-Datei in TStringGrid importieren
 
Hallo
Sheet.Cells.SpecialCells(xlCellTypeLastCell,EmptyP aram).Activate;//
Wird mit c geschrieben

Da der Fehler erst zur Laufzeit auftritt gehe ich davon aus, dass Sheet ein OleVariant ist und Du somit die späte Bindung nutzt. Wenn Du auf die frühe Bindung verwendest (immer zu empfehlen) hast Du auch die Unterstützung der IDE und es werden Dir die verfügbaren Methode angezeigt.

Sharky 28. Mai 2004 08:52

Re: Excel-Datei in TStringGrid importieren
 
Hai allarich,

von welchem Tutorial ist denn der Quellcode?
Ist auf dem Rechner auch Excel installiert?

Jens Schumann 28. Mai 2004 09:03

Re: Excel-Datei in TStringGrid importieren
 
Liste der Anhänge anzeigen (Anzahl: 1)
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] :oops: 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]

allarich 28. Mai 2004 11:24

Re: Excel-Datei in TStringGrid importieren
 
Hallo Jens Schumann,
danke für deinen Hinweis;immer diese Tipfehler. Funktioniert jetzt einwandfrei !!

Hallo Sharky,
habe de Quellcod von SwissDelphiCenter.ch heruntergeladen !!

MfG
allarich


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:29 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz