AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Größere Anzahl von Exceldateien auswerten
Thema durchsuchen
Ansicht
Themen-Optionen

Größere Anzahl von Exceldateien auswerten

Ein Thema von zeras · begonnen am 12. Jul 2020 · letzter Beitrag vom 19. Jul 2020
Antwort Antwort
zeras

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

Größere Anzahl von Exceldateien auswerten

  Alt 12. Jul 2020, 11:54
Ich habe ein Programm, welches alle Exceldateien (gleicher Aufbau) eines Pfades einliest und dann Werte zwischenspeichert.
Derzeit sind das ca. 8000 Dateien und es dauert einige Stunden, bis das Programm durch ist.

Hier die Code Schnipsel
Delphi-Quellcode:
if OpenXlsWorkBook(fName, WSName, WBk, WS) then begin
  
....
  KalkData.Kunde := WS.Cells.Item[arZellBezüge[Kunde, 1], arZellBezüge[Kunde, 2]].Value;
  
....
  
   if WBk <> Nil then begin
    SaveChanges := Save;
    WBk.Close(SaveChanges, EmptyParam, EmptyParam, lcidXls);
    WBk := NIL;
  end;
Sieht hier jemand Optimierungsmöglichkeiten?
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain
  Mit Zitat antworten Zitat
hstreicher

Registriert seit: 21. Nov 2009
223 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

AW: Größere Anzahl von Exceldateien auswerten

  Alt 12. Jul 2020, 13:02
schreiben und lesen in Excel über Delphi ist ziemlich langsam ,
ich würde, wenn möglich, die Excel Datei als CSV abspeichern
und die CSV verarbeiten

mfg Hannes
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.073 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Größere Anzahl von Exceldateien auswerten

  Alt 12. Jul 2020, 13:14
Eine richtige Datenbank zu verwenden scheitert an den Umständen/Kundenvorgaben?
  Mit Zitat antworten Zitat
zeras

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

AW: Größere Anzahl von Exceldateien auswerten

  Alt 12. Jul 2020, 13:38
schreiben und lesen in Excel über Delphi ist ziemlich langsam, ich würde, wenn möglich, die Excel Datei als CSV abspeichern und die CSV verarbeiten.

mfg Hannes
Die Dateien enthalten für andere Nutzer noch eingebettete Infos. Daher kann ich diese nicht in CSV speichern.


Eine richtige Datenbank zu verwenden scheitert an den Umständen/Kundenvorgaben?
Das hatte ich schon einmal gefragt, ob man das nicht ändern kann. Aber da hängen wahrscheinlich noch so viele alte Zöpfe (oder Köpfe) dran. Für das Nachfolgesystem hat man dann eine Datenbank erstellen lassen.

Vielleicht merke ich mir intern (in einer DB) das Datum der jeweiligen Exceltabelle. Wenn sich dieses nicht geändert hat, dann brauche ich die Daten ja nicht erneut auswerten und ich kann mir das Laden einer Exceltabelle sparen.
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.214 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Größere Anzahl von Exceldateien auswerten

  Alt 12. Jul 2020, 14:09
Was genau ist bei dir langsam?
Das Speichern oder das Ändern der Werte in der Excel-Datei?
Wenn du viele Werte (in einem Excelbereich) änderst, dann ist evtl. das Arbeiten mit VariantArrays schneller

Alternativ gibts ein paar € aus und machst alles native in Delphi: https://www.tmssoftware.com/site/flexcel.asp
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
zeras

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

AW: Größere Anzahl von Exceldateien auswerten

  Alt 12. Jul 2020, 15:39
Was genau ist bei dir langsam?
Das Speichern oder das Ändern der Werte in der Excel-Datei?
Ich lese nur Daten aus den Exceltabellen aus. Immer an gleichen Stellen, immer die gleiche Anzahl und immer dasselbe Tabellenblatt. Nur, dass es ca. 8000 Exceldateien sind. Und es werden täglich einige mehr.

Wenn du viele Werte (in einem Excelbereich) änderst, dann ist evtl. das Arbeiten mit VariantArrays schneller
Das jeweilige Tabellenblatt hat benutzt 9 Spalten und 71 Zeilen. Könnte ich da das Array komplett einlesen und mir dann die entsprechenden Werte auslesen?
Derzeit kopiere ich jede Zelle, wie oben beschrieben. Das sind aber nur 13 Werte.

Alternativ gibts ein paar € aus und machst alles native in Delphi: https://www.tmssoftware.com/site/flexcel.asp
Das flexcel habe ich sogar. Meinst du, dass es dann schneller geht? Das wäre vielleicht ein weiterer Ansatz.
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain
  Mit Zitat antworten Zitat
stifflersmom

Registriert seit: 8. Dez 2005
Ort: 24994 Holt
381 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#7

AW: Größere Anzahl von Exceldateien auswerten

  Alt 12. Jul 2020, 15:43
Aber Du wirst doch nicht jeden Tag alle Dateien einlesen müssen, oder?
Also reicht es doch bestimmt aus, den letzten Zeitpunkt der Auswertung zu speichern und beim nächsten Durchgang nur die dateien zu verarbeuten, die eben nach diesem gemerkten Zeitpunkt erstellt/geändert worden sind.
  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 19:56 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 by Thomas Breitkreuz