AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Einfachere Methode für Excel Steuerung?
Thema durchsuchen
Ansicht
Themen-Optionen

Einfachere Methode für Excel Steuerung?

Ein Thema von ByTheTime · begonnen am 29. Okt 2011 · letzter Beitrag vom 29. Okt 2011
Antwort Antwort
ByTheTime

Registriert seit: 24. Sep 2011
Ort: Frankfurt
297 Beiträge
 
Delphi XE2 Architect
 
#1

Einfachere Methode für Excel Steuerung?

  Alt 29. Okt 2011, 18:23
Hallo,
ich arbeite an einem Programm, das in Excelzellen schreibt (via OLE). Allerdings bin ich der Meinung, das der Vorgang etwas zu lange dauert. Ich habe das ganze erst für die ersten 100 Zellen vorgenommen (ich brauche noch ca. 900 ):
Delphi-Quellcode:
if (Edit1.Text <> '') then
    Excel.Cells[x, x].Value := Edit1.Text;

if (Edit2.Text <> '') then
    Excel.Cells[x, x].Value := Edit2.Text;

//[...]
Da es etwas aufwendig ist, diesen Code für 1000 Excelzellen zu deklarieren, wäre es hilfreich, wenn das etwas schhneller gehen würde (gibt es kostenlose Komponenten, oder ähnliches?).

MfG

Lukas
Lukas
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Einfachere Methode für Excel Steuerung?

  Alt 29. Okt 2011, 18:34
Warum bettest du nicht das Exceldokumenr direkt ein und lässt den Benutzer direkt in Excel editieren?
Markus Kinzler
  Mit Zitat antworten Zitat
WM_CLOSE

Registriert seit: 12. Mai 2010
Ort: königsbronn
398 Beiträge
 
RAD-Studio 2009 Pro
 
#3

AW: Einfachere Methode für Excel Steuerung?

  Alt 29. Okt 2011, 18:46
Du könntest im Tag jedes Edit die Zeile und spalte reinschreiben, in der der Text nachher stehen soll. und dann mit einer Schleife alle Komponenten eintragen.
Code:
Für Jedes TEdit Edit in Form1.GetComponents
  Trage Edit.Text in Zelle [HiWordVonTag, LoWordVonTag] ein
Das ist natürlich nur dann sinnvoll, wenn es sich um ungleichmäßige Daten handelt.
Für jewils gleich aufgebaute Datensätze gibt es ein TControlGrid oser so.
EDIT: Das Tag unterteilt man in Hi und LoWord:
Delphi-Quellcode:
procedure GetHiWordLoWord(Input:Integer; var OutputLow:Word; var OutputHi:Word)
begin
  OutputLow=Word(Input AND $0000FFFF);
  OutputHi=Word((Input AND $FFFF0000) shr 16);
end;
Ohne Gewähr
Delphi programming

Geändert von WM_CLOSE (29. Okt 2011 um 18:54 Uhr)
  Mit Zitat antworten Zitat
ByTheTime

Registriert seit: 24. Sep 2011
Ort: Frankfurt
297 Beiträge
 
Delphi XE2 Architect
 
#4

AW: Einfachere Methode für Excel Steuerung?

  Alt 29. Okt 2011, 19:14
@mkinzler: Das ist nicht Sinn und Zweck der Anwendung. Das ExcelSheet ist sozusagen etwas "dumm". Meine Anwendung hingegen ist schlau . Sie berechnet aus dem Werten von EditX1 und EditX2 einen Wert für Edit1, diese 3 Werte übernimmt es dann in die Excel Tabelle, würde ich die Exceltabelle in die Anwendung einbetten, müsste ich Wert 3 erst mit dem Taschenrechner ausrechnen. Natürlich ist das noch das einfachste Beispiel: In meinem Programm kann man noch einstellen, welche Werte es aus EditX1, EditX2, EditX3, EditX4 für Edit1 bis Edit 10 ausrechnen soll. Mit dem einbetten müsste ich dann das ExcelSheet "intelligent" machen (allerdings kann ich dann nicht mehr speziellen Einstellungen vornehmen, die meine Anwendung ermöglicht).

@WM_Close: Leider handelt es sich um ungleichmäßige Daten

An was ich noch gedacht hätte: Eine eigene Komponente entwickeln! Sozusagen eine Excelkomponente, in der ich angebe aus welchem EditFeld, in welche Zelle und bedingungen (Wenn das Feld nicht leer ist, dann). Allerdings habe ich garkeine Idee wie das funktioniert.
Lukas
  Mit Zitat antworten Zitat
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.643 Beiträge
 
Delphi 12 Athens
 
#5

AW: Einfachere Methode für Excel Steuerung?

  Alt 29. Okt 2011, 19:51
Warum kannst du nicht eine Funktion deklarieren, wo du das Editfeld und die Koordinaten mit übergibst?
Dann vielleicht noch ein Array, wo die Editfelder drinstehen, damit die mit einer Schleife darauf zugreifen kannst?
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain

Geändert von zeras (29. Okt 2011 um 22:18 Uhr)
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#6

AW: Einfachere Methode für Excel Steuerung?

  Alt 29. Okt 2011, 20:50
Hast Du wirklich 900 einzelne Editfelder? Oder von mir aus 600?
Und die sind so individuell, das man die nicht irgendwie in ein Grid o.ä. packen kann?
Keine Gemeinsamkeiten? Keine Wiederholungen?
  Mit Zitat antworten Zitat
WM_CLOSE

Registriert seit: 12. Mai 2010
Ort: königsbronn
398 Beiträge
 
RAD-Studio 2009 Pro
 
#7

AW: Einfachere Methode für Excel Steuerung?

  Alt 29. Okt 2011, 22:02
Zitat:
@WM_Close: Leider handelt es sich um ungleichmäßige Daten
Sorry, wenn ich mich mal selbst zitieren muss:
Zitat:
Das ist natürlich nur dann sinnvoll, wenn es sich um ungleichmäßige Daten handelt.
Es geht doch darum, dass jedes Edit-Feld weiß zu welcher Zelle es gehört.
Delphi programming
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#8

AW: Einfachere Methode für Excel Steuerung?

  Alt 29. Okt 2011, 23:06
Wenn ich das so lese habe ich den Eindruck dass es entweder sehr komplex ist, oder nicht vorher zu Ende gedacht.
Bergeweise Edits (wenn es so ist) sind in jedem Fall eine Katastrophe. Wie sieht es aus wenn Du eine Memorytable oder eine Clientdataset ausetzt, mit diversen unsichtbaren benötigten Feldern und einigen berechneten Feldern, könntest Du es damit hinbekommen?
Diese Tabelle lässt sich dann "ratzfatz" generisch nach Excel kopieren ...
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
ByTheTime

Registriert seit: 24. Sep 2011
Ort: Frankfurt
297 Beiträge
 
Delphi XE2 Architect
 
#9

AW: Einfachere Methode für Excel Steuerung?

  Alt 29. Okt 2011, 23:44
Sorry,
ich habe mich wohl etwas undeutlich ausgedrückt. Meine Anwendung ist eine Art Protokoll: Es gibt 7 Tage mit je 4 Unterzonen (4 Zeitzonen: 0-6, 6-12, 12-18, 18-24). Jede Zeitsone besitzt 25 Felder (Edit's und ComboBoxen). 25 Felder x 4 Zeitzonen x 7 Tage --> 700 Felder (dazu kommen noch ca. 250 andere Felder, das ist aber eine andere Sache, die erstmal nebensächlich ist). Da habe ich mir gedacht: 'Cool, legst einfach 2 TabbedNotebooks an, eins für die Wochentage, das andere für die 4 Zeitzonen.'. Im Endeffekt ist mir dann aufgefallen: Das ist ja etwas umständlich, also hab ich TabControlls genommen. Jetzt starte ich eine if-Abfrage in der ich Abfrage, welcher Tag angewählt ist und dannach welche Zone:
Delphi-Quellcode:
// Mög. 1

if TabControlDays.TabIndex = 0 then //Monatg
 begin
   if TabControlZones.TabIndex = 3 then //12-18 Uhr
    begin
      if EditX.Text <> 'then
      Excel.Cells[1, 3].Value := EditX.Text
      // [...]
    end;
 end;

// Mög. 2

if ((TabControlDays.TabIndex = 0) and (TabControlZones.TabIndex = 0)) then // Montag, Zeitzone 1
 begin
   if EditX.Text <> 'then
   Excel.Cells[1, 3].Value := EditX.Text
   // [...]
 end;
Und zu den Fragen von oben: War wohl etwas neben der Mütze, natürlich gibt es Gemeinsamkeiten, es gibt 28 Edit Felder (Für jeden Tag mit wiederum jeder Zeitzone) nur für 'X', weiter 28 für 'Y'. Ich hoffe ihr habt meine Erklärung so einigermaßen verstanden.
Lukas
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#10

AW: Einfachere Methode für Excel Steuerung?

  Alt 29. Okt 2011, 23:53
Vom Denkansatz, hier denke ich datenbanktechnisch, benötige ich nach Deiner Definition 27 Felder
Wochentag,ZeitZone,Feld1,Feld2.....
1-7 1-4 was auch immer
Die Tabelle, das Array was auch immer Du verwenden möchtest hat dann 7*4 Zeilen zu 27 Feldern.
Die Eingabe erfolgt in die Felder 3-27, die Auswahl über die Felder 1 und 2.
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:41 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