Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Suche Datensenitive ExportToExcel-Funktion (https://www.delphipraxis.net/169164-suche-datensenitive-exporttoexcel-funktion.html)

Jumpy 3. Jul 2012 10:47

Datenbank: Oracle • Version: 10g • Zugriff über: ADO+ODBC

Suche Datensenitive ExportToExcel-Funktion
 
Hallo,

ich hab eine Funktion geschrieben, die Inhalte einer ADO-Query nach Excel exportiert via OLE usw. Beispiele dafür hab ich hier einige gefunden und mich daran orientiert. Knackstelle ist beim Schreiben in eine Excel-Zelle (sinngemäß):

Code:
while not query.EOF do
  begin
  for j=0 to query.Fields.Count-1 do
    Excel.Workbook.Worksheet.Cells[i+1,j+1].value=query.Fields[j].AsString;
  Inc(i);
  query.Next;
  end;
Problem ist das Excel diese Daten fröhlich umformatiert. Beispiel ein String mit Personalnummer 001234. Excel schneidet die führenden Nullen ab und interpretiert das als Zahl 1234.
Double oder Currency Werte bekommen in Excel amerikanische Zahlenformate (da wohl die Daten so in der DB sind) usw. usw.

Hat jemand vllt. eine Funktion, die das abfängt und z.B. nach den Datentypen der Query guckt und dann entsprechend irgendwie reagiert?

shmia 3. Jul 2012 11:14

AW: Suche Datensenitive ExportToExcel-Funktion
 
Du könntest das Property NumberFormat (aus Interface Range) setzen.
Für einen String ist das NumberFormat = '@'.

p80286 3. Jul 2012 11:18

AW: Suche Datensenitive ExportToExcel-Funktion
 
Delphi-Quellcode:
if forcestring then
      excel.Activesheet.Cells.NumberFormat := '@';
Das funktioniert für alle Felder,
eine andere Möglichkeit wäre
Delphi-Quellcode:
.Cells(x,y):=''''+MeineDaten;
oder
Delphi-Quellcode:
.Cells(x,y):='"'+MeineDaten;
Hierbei hat Excel aber schon mal Schluckauf bekommen, sprich, doch wieder falsch formatiert.

Gruß
K-H

P.S. ist nicht auf meinem Mist gewachsen, da hat es vor 2(?)Jahren schon einmal einen Thread zu gegeben.

Jumpy 3. Jul 2012 11:31

AW: Suche Datensenitive ExportToExcel-Funktion
 
Ich hatte da auch schon an ein =CHR(39)+Query....AsString gedacht.

shmias Tip muss ich auch mal ausprobieren. Dazu vllt. beim Schreiben der Headline auch mal auf die Datentypen der Felder gucken und die Excel-Spalten entsprechend vorformatieren. Teste ich gleich morgen mal, muss jetzt erstmal das Schulzeugniss abholen, juhu (erstmal) nie wieder Schule.8-)

Iwo Asnet 3. Jul 2012 11:48

AW: Suche Datensenitive ExportToExcel-Funktion
 
Das man per EXCEL direkt an aus einer DB Daten lesen kann, ist bekannt?

p80286 3. Jul 2012 12:17

AW: Suche Datensenitive ExportToExcel-Funktion
 
Zitat:

Zitat von Iwo Asnet (Beitrag 1173287)
Das man per EXCEL direkt an aus einer DB Daten lesen kann, ist bekannt?

Nichts für ungut, aber das ist so als würdest Du vorschlagen mit dem Fahrrad von Hamburg nach Lübeck zu fahren. Natürlich geht das, aber alleine die 64kSatzgrenze ist da schon ein Hindernis. Und dann zwickt es hier und da. Das sind zumindestens meine Erfahrungen mit älteren Excel-Versionen.

Und Du schleppst immer die Datenabfrage in Deiner Excel-Datei mit Dir herum. Gebraucht wird die Datei aber nur als Datencontainer.

Gruß
K-H

Iwo Asnet 3. Jul 2012 12:29

AW: Suche Datensenitive ExportToExcel-Funktion
 
Zitat:

Zitat von p80286 (Beitrag 1173297)
Zitat:

Zitat von Iwo Asnet (Beitrag 1173287)
Das man per EXCEL direkt an aus einer DB Daten lesen kann, ist bekannt?

Nichts für ungut, aber das ist so als würdest Du vorschlagen mit dem Fahrrad von Hamburg nach Lübeck zu fahren. Natürlich geht das, aber alleine die 64kSatzgrenze ist da schon ein Hindernis.

Ich verwende keine Datenmengen > 64k für Reports, weil die keiner lesen kann...
Zitat:

Und dann zwickt es hier und da. Das sind zumindestens meine Erfahrungen mit älteren Excel-Versionen.
Erfahrungen von früher sind aber eher Erinnerungen. Frisch das doch mal auf.
Zitat:

Und Du schleppst immer die Datenabfrage in Deiner Excel-Datei mit Dir herum. Gebraucht wird die Datei aber nur als Datencontainer.
Schlimm?

Übrigens: EXCEL + OLE = Schnecke (vs. 'Fahrrad')

Ich erstelle kleine Reporttemplates mit EXCEL und wenn der DAU doppelklickt, hat er alles, was er braucht. Immer aktuell, ohne sich selbst drum zu kümmern. Das ist dann kein Fahrrad, sondern eher ein Luxusdoppeldecker mit komplettem Innenausbau, Dusche, HiFi-Anlage, Küche und Butler. Nur die Geschwindigkeit... nun ja, Tempo 80. Aber der DAU hat Zeit. Und ich auch, weil ich mir keinen abgebrochen habe, seinem Wunsch nachzukommen.

Will ich EXCEL-Reports aus einer Anwendung heraus erstellen, die auch ohne Live-DB Anbindung funktioniert, verwende ich Komponenten von Axolot-Data oder DevExpress. Damit ist die Formatierung gegessen.

Aber das ist alles OT (Sry).

omata 3. Jul 2012 12:59

AW: Suche Datensenitive ExportToExcel-Funktion
 
Zitat:

Zitat von Iwo Asnet (Beitrag 1173301)
Aber das ist alles OT (Sry).

@Iwo Asnet: Ist es nicht! Sondern ein Hinweis, wie man effektiv arbeiten kann. Danke für deine tollen Tipps (ich mache es ähnlich, für z.B. Statistiken + DAUs --> einfach unschlagbar!)

Iwo Asnet 3. Jul 2012 14:02

AW: Suche Datensenitive ExportToExcel-Funktion
 
Zitat:

Zitat von omata (Beitrag 1173305)
Zitat:

Zitat von Iwo Asnet (Beitrag 1173301)
Aber das ist alles OT (Sry).

@Iwo Asnet: Ist es nicht!

Na ja. Die Frage ging eher in Richtung "Formatierung mit OL(L)E EXCEL"

omata 3. Jul 2012 14:05

AW: Suche Datensenitive ExportToExcel-Funktion
 
Zitat:

Zitat von Iwo Asnet (Beitrag 1173319)
Na ja. Die Frage ging eher in Richtung "Formatierung mit OL(L)E EXCEL"

Ich weiß, aber man kann ja auch mal über den Tellerrand schauen und deshalb fand ich Deinen Hinweis trotzdem sinnvoll. Dein Wegducken am Ende war nicht nötig und das wollte ich nochmal zum Ausdruck bringen :hi:


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:42 Uhr.
Seite 1 von 2  1 2      

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