Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Ein Edit.Text in eine vorgefertigte Excel Datei suchen. (https://www.delphipraxis.net/197239-ein-edit-text-eine-vorgefertigte-excel-datei-suchen.html)

zeina 24. Jul 2018 08:35

Ein Edit.Text in eine vorgefertigte Excel Datei suchen.
 
Hi !

Ich möchte gerne ein Textfeld, in meinem Fall Edit1.Text, in die Zelle in eine Exceltabelle suchen. Wichtig hierbei ist, ich will keine neue Exceldatei erstellen, sondern einfach eine Vorlage (Zum Beispiel eine Rechnung) an der nach bestimmten name oder producte suchen

Geht das und wenn ja, kann mir jemand den Anstoß geben, wie es funktionieren könnte ?

p80286 24. Jul 2018 09:14

AW: Ein Edit.Text in eine vorgefertigte Excel Datei suchen.
 
Es gibt verschiedene Möglichkeiten, mit Hilfe von OLE falls auf dem Rechner Excel installiert ist, oder aber mit ODBC, oder mit Fremdkomponenten.
Oder Du exportierst den Inhalt z.B. in eine .CSV-Datei und liest diese dann in deinem Programm.

Was hast Du denn (schon).

Gruß
K-H

ConnorMcLeod 24. Jul 2018 09:28

AW: Ein Edit.Text in eine vorgefertigte Excel Datei suchen.
 
Zitat:

Zitat von zeina (Beitrag 1408460)
Ich möchte gerne ein Textfeld, in meinem Fall Edit1.Text, in die Zelle in eine Exceltabelle suchen.

Hi, ich möchte gerne ein Posting, in meinem Fall das Vorliegende, in die Gedanke in eine Ordnung bringen ;-)

zeina 24. Jul 2018 09:44

AW: Ein Edit.Text in eine vorgefertigte Excel Datei suchen.
 
auf meinem Rechner Excel installiert ist.
Ich habe eine vorgefertigte Excel Datei ,die Adressere und ihre kordinaten hat.
ich möchte zu eine Adresse und koordinaten erreichen ,ohn die Excel Datei zu öffnen.
Ich denke daran,dass es die adresse mit ihre kordinaten auf eine StringGird zeigt werden könnte.
wie kann man so machen???

zeina 24. Jul 2018 09:45

AW: Ein Edit.Text in eine vorgefertigte Excel Datei suchen.
 
Zitat:

Zitat von ConnorMcLeod (Beitrag 1408473)
Zitat:

Zitat von zeina (Beitrag 1408460)
Ich möchte gerne ein Textfeld, in meinem Fall Edit1.Text, in die Zelle in eine Exceltabelle suchen.

Hi, ich möchte gerne ein Posting, in meinem Fall das Vorliegende, in die Gedanke in eine Ordnung bringen ;-)


:spin2::spin2::spin2::spin2:

p80286 24. Jul 2018 10:02

AW: Ein Edit.Text in eine vorgefertigte Excel Datei suchen.
 
Zitat:

Zitat von zeina (Beitrag 1408475)
ich möchte zu eine Adresse und koordinaten erreichen ,ohn die Excel Datei zu öffnen.

Das geht nicht!
Wenn Du an die Daten kommen willst, mußt Du die Datei öffnen.

Wenn Du Excel installiert hast, dann ist OLE eine Möglichkeit.
Ein Beispiel gibt es hier.
(Gib mal in der Suchfunktin OLE Excel ein!)

Falls Deutsch nicht Deine Muttersprache ist, vielleicht geht es besser in Englisch?

Gruß
K-H

hoika 24. Jul 2018 10:43

AW: Ein Edit.Text in eine vorgefertigte Excel Datei suchen.
 
Hallo,
falls es etwas kosten kann, bei TMS gibt es passende Komponenten.
Die funktionieren auch ohne ein installiertes Excel.

Und nein, auch dort muss die Excel-Datei geöffnet werden (von der jeweiligen Komponente).

KodeZwerg 24. Jul 2018 10:57

AW: Ein Edit.Text in eine vorgefertigte Excel Datei suchen.
 
Oder spreche mit Bildern. Das gesagte in einen vernünftigen Kontext zu bringen ist mehr als schwer.

zeina 25. Jul 2018 08:11

AW: Ein Edit.Text in eine vorgefertigte Excel Datei suchen.
 
HaLLO;
das ist mein code.Ich hätte gerne eine (search function oder procedure),in der man die Excel-Datei nach einer bestimmten string (edit feld) durchsuchen könnte.
Code:
procedure TForm1.Button2Click(Sender: TObject);

var
     Workbook, Filename: OleVariant;
     OpenDialog: TOpenDialog;
     x,y:integer;
     maxcol,maxRow:integer;

   begin
     if OpenDialog.Execute then
     begin
       try
         excel := CreateOleObject('Excel.Application');
       except
         ShowMessage('Excel konnte nicht gestartet werden !');
       end;
       excel.workbooks.Open('C:\Users\qatrangi\Desktop\OSM neu\Mappe1.xlsx');
       excel.visible := true; { für die testphase sinnvoll }
       excel.Sheets[1].select;
       maxcol := excel.columns.count;
       maxRow := excel.Rows.count;

       for x := 1 to maxcol - 1 do
       begin
         for y := 1 to maxRow - 1 do
         begin
           if excel.cells[y, x].Value = (Edit1.Text) then
           begin
              excel.cells[y,x].select;
               polydrow(edit1.text);
               StringGrid1.Cells [x-1,y-1]:=excel.Cells[y,x].Value ;

           end;
         end;
       end;
     end;

   end;

Redeemer 25. Jul 2018 08:16

AW: Ein Edit.Text in eine vorgefertigte Excel Datei suchen.
 
Da hilft dem Kodezwerg sein Wörterbuch "Bilder - Deutsch / Deutsch - Bilder" auch nicht, wenn du unkommentierten Code postest...

p80286 25. Jul 2018 10:04

AW: Ein Edit.Text in eine vorgefertigte Excel Datei suchen.
 
(kommt mir in Teilen bekannt vor??)
a) Du solltest "Excel" definieren:
Delphi-Quellcode:
Excel : variant;
b) Excel zählt von 1..Col.Count wenn Du nicht die letzte Spalte/Zeile ignorieren willst, solltest Du das korrigieren.
c) Ich bin mir nicht mehr sicher, aber es sollte wohl
Delphi-Quellcode:
Excel.activworkbook.
heißen?
d) Du solltest Dein Stringgrid an die Größe des Excel-Sheets anpassen.

Das ist, was ich auf die Schnelle gesehen habe.

Gruß
K-H

P.S.
Polydrow ?

zeina 25. Jul 2018 10:39

AW: Ein Edit.Text in eine vorgefertigte Excel Datei suchen.
 
ich habe ein feld text und vorhandener excel datei.meine ziel ist :wenn ich etwas in edit feld schreiben,soll mein program danach in excel datei suchen und mir eine z.b (showmessage) liefern

zeina 25. Jul 2018 10:41

AW: Ein Edit.Text in eine vorgefertigte Excel Datei suchen.
 
Zitat:

Zitat von p80286 (Beitrag 1408624)
(kommt mir in Teilen bekannt vor??)
a) Du solltest "Excel" definieren:
Delphi-Quellcode:
Excel : variant;
b) Excel zählt von 1..Col.Count wenn Du nicht die letzte Spalte/Zeile ignorieren willst, solltest Du das korrigieren.
c) Ich bin mir nicht mehr sicher, aber es sollte wohl
Delphi-Quellcode:
Excel.activworkbook.
heißen?
d) Du solltest Dein Stringgrid an die Größe des Excel-Sheets anpassen.

Das ist, was ich auf die Schnelle gesehen habe.

Gruß
K-H

P.S.
Polydrow ?

hi,
ich habe Excel : variant; als global definiert

KodeZwerg 25. Jul 2018 15:56

AW: Ein Edit.Text in eine vorgefertigte Excel Datei suchen.
 
Zitat:

Zitat von Redeemer (Beitrag 1408590)
Da hilft dem Kodezwerg sein Wörterbuch "Bilder - Deutsch / Deutsch - Bilder" auch nicht, wenn du unkommentierten Code postest...

Danke für den Lacher ^_^


Dieser Schnippsel könnte Dir helfen:
Delphi-Quellcode:
oExcel.Cells.Find('Suchbegriff', oExcel.Cells.Item[1,1], xlValues, xlWhole, xlByColumns, xlNext, False, False);

zeina 26. Jul 2018 06:53

AW: Ein Edit.Text in eine vorgefertigte Excel Datei suchen.
 
Zitat:

Zitat von KodeZwerg (Beitrag 1408682)
Zitat:

Zitat von Redeemer (Beitrag 1408590)
Da hilft dem Kodezwerg sein Wörterbuch "Bilder - Deutsch / Deutsch - Bilder" auch nicht, wenn du unkommentierten Code postest...

Danke für den Lacher ^_^


Dieser Schnippsel könnte Dir helfen:
Delphi-Quellcode:
oExcel.Cells.Find('Suchbegriff', oExcel.Cells.Item[1,1], xlValues, xlWhole, xlByColumns, xlNext, False, False);

Hi,
was sind: (xlValues, xlWhole, xlByColumns, xlNext) bitte???

KodeZwerg 26. Jul 2018 07:06

AW: Ein Edit.Text in eine vorgefertigte Excel Datei suchen.
 
Zitat:

Zitat von zeina (Beitrag 1408708)
was sind ... bitte???

Am besten diesen Link durchlesen, bei meinem Schnippsel handelt es sich um OLE abfragen mit installiertem/laufenden Excel, Du wolltest ja in Delphi die Datei nicht öffnen, deswegen mein OLE Vorschlag.
Hier geht's zum Link.

zeina 26. Jul 2018 09:17

AW: Ein Edit.Text in eine vorgefertigte Excel Datei suchen.
 
Dieser Schnippsel functioniert,aber es sucht nicht in alle columns.

wenn ich es für maxcol=2 und maxrow=2 gemacht
er hat mir vier mal showmessage gezeigt??

könnte jemand mir hilfen,wo meine Fehler ist??

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
  var
    WorkBook, sheet: OleVariant;
    X, Y: Integer;
    maxcol, maxRow: Integer;
    openDialog: TOpenDialog;
  begin
    if openDialog.Execute then
    begin
      try
        excel := CreateOleObject('Excel.Application');
      except
        ShowMessage('Excel konnte nicht gestartet werden !');
        exit;
      end;
      excel.Visible := true;{ für die testphase sinnvoll }
      excel.workbooks.open('C:\Users\qatrangi\Desktop\OSM neu\Marker1.xlsx');
      excel.activeworkbook.sheets[1].activate;
      maxcol := excel.columns.count;
      maxRow := excel.rows.count;
      for X := 1 to maxcol do
         begin
        for Y := 1 to maxRow do
        begin
          if edit1.text = excel.cells.Item[y, x].Value then
            begin
            excel.Cells.Find(edit1.text,excel.Cells.Item[y,x], xlValues, xlWhole, xlByColumns, xlNext, False, False);
            excel.cells[y,x].select;
            showmessage('yes') ;
            exit;
            //polydrow(Edit1.Text);
           // StringGrid1.cells[X - 1, Y - 1] := excel.cells.Item[X, Y].Value
             end
           else showmessage('no');
          end;
         end;
      excel.workbooks.close;
      excel := Unassigned;
    end;
  end;

Jasocul 30. Jul 2018 13:35

AW: Ein Edit.Text in eine vorgefertigte Excel Datei suchen.
 
Du hast 2 Spalten und 2 Zeilen.
2 x 2 = 4

Die gehst alle 4 Felder in excel durch.
Wenn du einen Treffer hast, machst du ein Showmessage('yes'). Hast du keinen Treffer, machst du Showmessage('no').
Bei 4 Feldern machst du dann 4 mal Showmessage.

Das Programm macht also genau das, was du programmiert hast. Demnach liegt kein Fehler vor.
Zitat:

Zitat von zeina (Beitrag 1408738)
könnte jemand mir hilfen,wo meine Fehler ist??

Wie soll man da helfen, wenn es das macht, was du programmiert hast?

Vielleicht solltest du mal den Debugger in Delphi verwenden, damit du siehst, was in deinem Programm passiert.

himitsu 30. Jul 2018 13:42

AW: Ein Edit.Text in eine vorgefertigte Excel Datei suchen.
 
Zitat:

Zitat von zeina (Beitrag 1408708)
was sind: (xlValues, xlWhole, xlByColumns, xlNext) bitte???

Eigentlich recht einfach zu verstehen.

xlValues: Bei berechneten Feldern soll im Ergebnis und nicht in der Formel gesucht werden

xlPart/xlWhole: ist sowas wie das "ganze Wörter" beim Suchen in Texteditoren (nur wenn ganze Zelle oder wenn Teil von Zelle)

xlNext: vorwärs oder rückwärs suchen, also vor oder nach der aktuellen Zelle

https://msdn.microsoft.com/en-us/vba...meration-excel [edit] die DP kürzt sehr optimal ... ist alles was Anderes, auch wenn es nicht so aussieht :stupid:
https://msdn.microsoft.com/en-us/vba...meration-excel
https://msdn.microsoft.com/en-us/vba...meration-excel
https://msdn.microsoft.com/en-us/vba...meration-excel
...

Delphi.Narium 30. Jul 2018 14:12

AW: Ein Edit.Text in eine vorgefertigte Excel Datei suchen.
 
Die gleichen Links (oder sind es dieselben?) in etwas "übersetzter" Form:
xllookat
xlsearchorder
xlsearchdirection
xlfindlookin

zeina 2. Aug 2018 10:42

AW: Ein Edit.Text in eine vorgefertigte Excel Datei suchen.
 
Dank für eure Hilfe,
Ich habe noch ein problem und zwar:
wie kann man zeigen,wie viel columns für jeder Row gibt?
Ich habe eine Funktion,durch die man Anzahl der spalten von einer bestimmten Row sehen könnten:


[DP] function TForm1.show(ad:string):integer;
var x,y:integer;
begin
Result:=0;
for X := 1 to 3 do
begin
for Y := 1 to 4 do
begin
if ad =excel.cells.Item[y, x].Value then
Result:= Excel.Cells[y,x].row;
end;
end;
end;[/DP]

ZYLAGON 2. Aug 2018 18:52

AW: Ein Edit.Text in eine vorgefertigte Excel Datei suchen.
 
Hallo zeina,

eventuell ist UsedRange.Columns.count, was Du benötigst.

VG
ZYL

zeina 3. Aug 2018 08:14

AW: Ein Edit.Text in eine vorgefertigte Excel Datei suchen.
 
Hallo ZYLAGON,
danke für deine Antwort.
das funktioniert,aber zeigt wie viel max columns in Datei gibt.In meine Excel datei habe ich Rows mit Unterschiedliche Anzahl Spalten.
Meine Aufgabe ist,dass ich die Anzahl Spalten in ein bestimmte Row zeigen muss???

Chemiker 5. Aug 2018 10:15

AW: Ein Edit.Text in eine vorgefertigte Excel Datei suchen.
 
Hallo zeina,

Deine Angaben sind etwas konfus, aber ich habe mal ein kleines Beispielprogramm angehängt wie man die Anzahl Spalten in einer bestimmten Zeile und die Anzahl Zeilen in einer bestimmten Spalte ermitteln kann.

Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
var
  DateiName: TFileName;
  olevEXCELoffen: OLEVariant;
  AnzahlZeilen: integer;
  AnzahlSpalten: integer;
  SpaltenNr: integer;
  ZeilenNr: integer;
begin
  try
    olevEXCELoffen := CreateOleObject('Excel.Application');
  except
    ShowMessage('Excel ist nicht geöffnet !');
    Exit;
  end;
  olevEXCELoffen.Visible:= TRUE;
  olevEXCELoffen.Workbooks.Open('C:\Users\Public\Documents\EXCEL-Daten\AnzahlMappe1.xlsx');

  // Anzahl Zeilen ermitteln, in der Spalte die in SpaltenNr angegeben ist.

  SpaltenNr:= 2;
  AnzahlZeilen:= olevEXCELoffen.Cells[olevEXCELoffen.Rows.Count,SpaltenNr].End[xlUp].Row;
  showmessage(AnzahlZeilen.tostring);

  // Anzahl Spalten ermitteln, in der Zeile die in ZeilenNr angegeben ist.

  ZeilenNr:= 24;
  AnzahlSpalten:= olevEXCELoffen.Cells[ZeilenNr,olevEXCELoffen.Columns.Count].End[xlToLeft].Column;
  showmessage(AnzahlSpalten.tostring);

  olevEXCELoffen.Quit;
  olevEXCELoffen:= Unassigned;
end;


Bis bald Chemiker


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:50 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