Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Delphi und Excel (https://www.delphipraxis.net/69018-delphi-und-excel.html)

juelin 9. Mai 2006 10:38


Delphi und Excel
 
Hallo zusammen,

vielleicht kann mir jemand helfen.

Ich möchte in Delphi 7 eine Excelfile lesen.
Das klappt auch mit folgendem Code:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
  var exzeile: integer;
  var exspalte: integer;
  var excol: integer;
  var exrow: integer;
  var exinp: string;
begin
  Label4.Caption:='Open EXCEL';
  Label4.Refresh;
  Label5.Caption:='';
  Label5.Refresh;
  ausfall:=0;
  try
    Excel:=CreateOleObject('Excel.Application');
  except
    ausfall:=1;
    Label5.Caption:='Fehler EXCEL';
    Label5.Refresh;
  end;
  if ausfall = 0 then
  begin
    Excel.Visible:=False;
    Excel.WorkBooks.Open('C:IMTGERNord-LBexamplesNLB_MR_03_2006DatendatenneuNLB_MR_03_2006_Anzahl_Clients_neu.XLS');
    Excel.Sheets['Clients'].Activate;
    Label5.Caption:=IntToStr(excol)+'/'+IntToStr(exrow);
    Label5.Refresh;
    exzeile:=1;
    exspalte:=1;
    while exzeile > 0 do
    begin
      while exzeile > 0 do
      begin
        exinp:=Excel.Cells[exzeile, exspalte].Value;
        if ((exinp = '') and (exspalte = 2)) then
        begin
          Label5.Caption:='Zeile/Spalte:'+IntToStr(exzeile)+'/'+IntToStr(exspalte)+' <'+exinp+'>';
          Label5.Refresh;
          exspalte:=exspalte + 1;
        end else begin
          if ((exinp = '') and (exspalte > 1)) then
          begin
            exspalte:=1;
            exzeile:=exzeile + 1;
          end else begin
            if ((exinp = '') and (exspalte = 1)) then
            begin
              exzeile:=0;
              exspalte:=0;
            end else begin
              Label5.Caption:='Zeile/Spalte:'+IntToStr(exzeile)+'/'+IntToStr(exspalte)+' <'+exinp+'>';
              Label5.Refresh;
              exspalte:=exspalte + 1;
            end;
          end;
        end;
      end;
    end;
    Excel.Workbooks.Close;
    Excel.Quit;
    Excel:=Unassigned;
  end;
end;
Nun meine Frage:
wie kann ich den Celltyp auslesen (Numeric, Text, Date, usw)
und wie kann ich festellen wieviele Rows und Columns im Sheet sind?

Vielleich kann mir jemand ein beispiel schicken

Danke und Gruss
Jürgen

[edit=sakura] [delphi]_tags, Mail besser via PM austauschen ;) Mfg, sakura[/edit]

Helld_River 9. Mai 2006 11:15

Re: Delphi und Excel
 
Hi !
Thema: Celltyp
Excel hat eine Makrofunktion, mit der du Makros aufzeichnen kannst. Nehme also eine Makro auf, bei welchem du den Datentyp der Zelle änderst. Dannach schaust du dir den VB-Code des Makros an und darin findest du die Zeile, in welcher auf den Datentyp zugegriffen wird. Der Bezeichner in Delphi ist analog.

Bei der Anzahl an Spalten und Zahlen habe ich bisher nichts rausgefunden. Ich probiere einfach aus, wann nur noch leere Zeilen und Spalten kommen, allerdings hab ich den Vorteil, dass ich bestimmen kann, dass die Daten in der ersten Zelle anfangen.

Hoffe, das hilft dir weiter.

Gruß, Helld

Igotcha 9. Mai 2006 11:47

Re: Delphi und Excel
 
Zitat:

Zitat von Helld_River
...Der Bezeichner in Delphi ist analog.

Vorsicht, ich habe ein deutsches D7 und wenn ich mit den Office-Komponenten auf Excel zugreife, funktionieren bei mir nur die englischen Namen der Funktionen.

Viele Grüße
Igotcha

Helld_River 13. Mai 2006 15:33

Re: Delphi und Excel
 
HI !
Ich verstehe deine Aussage nicht so ganz, was willst du damit sagen ?
Ich meine, es ist egal, welche Version du von Delphi hast. Du greifst ja auf Excel zu, was ja nichts mit Delphi zu tun hat.

Gruß, Helld


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:46 Uhr.

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