Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Excel Zahl als Text interpretieren lassen (https://www.delphipraxis.net/135876-excel-zahl-als-text-interpretieren-lassen.html)

Mongfice 19. Jun 2009 09:11


Excel Zahl als Text interpretieren lassen
 
Moin.
Ich hab jetzt schon einige Zeit lang gesucht und auch diverse Hinweise zur Formatierung gefunden, nur funktioneren die irgendwie alle nicht.

Ich hab folgendes Problem (gekürzt auf die problematischen Stellen):

Ich exportiere Daten aus meiner Datenbank nach Excel...
Delphi-Quellcode:
for i:=0 to RecordCount - 1 do
begin
  Excel.Cells[i+5,1].Value:=FieldByName('ID').AsString;
  next;
end;
Die ID ist auch in der DB als Integer gespeichert, wird aber auf Grund eines Tipps den ich hier schon gelesen habe absichtlich als String übergeben...

Beim Import der gleichen Daten nutze ich folgenden Code:
Delphi-Quellcode:
repeat
  edit;
  Fieldbyname('ID').AsString:= ActiveSheet.Cells.Item[x, 'A'].Value;
  Post;
  Inc(x, 1);
until ActiveSheet.Cells.Item[x, 'A'].Value='';
Das Problem an der Geschichte ist, dass ich bei der Abbruchbedingung die Meldung bekomme, dass eine Variante des Typs "String" nicht in eine Variante des Typ "Double" umgewandelt werden konnte - da die Zellformatierung noch auf "Standard" steht, interpretiert Excel das fröhlich doch als Zahl...

Was ich brauche ist also entweder eine Möglichkeit die Spalte mit den IDs fest als Text interpretieren zu lassen - was vermutlich die einfachste Lösung wäre, zu der ich aber bisher noch nix gefunden habe), oder aber eine andere Möglichkeit festzustellen, wann das Ende der Daten erreicht ist (alle anderen Spalten enthalten zwar auf jeden Fall Text, dieser kann aber auch leer sein :-( ) Außerdem beginnen die eigentlichen Daten erst in Zeile 5, vorher sind Header-Infos drin, wo halt auch einige Spalten/Zeilen dann keine Daten enthalten...

Gruß
Mongfice

nahpets 19. Jun 2009 09:24

Re: Excel Zahl als Text interpretieren lassen
 
Hallo,

mal schmutzig hingeschrieben:
Delphi-Quellcode:
var
       iTest : Integer;
...
repeat
  edit;
  Fieldbyname('ID').AsString:= ActiveSheet.Cells.Item[x, 'A'].Value;
  Post;
  Inc(x, 1);
  // Eine Zahl in Value sollte eigentlich auch als String gelesen werden können,
  // so dass hier eine Konvertierung String nach Integer möglich sein sollte.
  // Ist diese nicht möglich, so wird -1 geliefert, was wir als Abbruchbedingung
  // nutzen können.
  iTest := StrToIntDef(ActiveSheet.Cells.Item[x, 'A'].Value,-1);
until iTest = -1;
Achso: Nicht getestet, nur mal so als Workaround gedacht, eventuell hilfts ja.

Mongfice 19. Jun 2009 09:38

Re: Excel Zahl als Text interpretieren lassen
 
Mhh, dafür das es Quick&Dirty war, funktioniert es ziemlich gut ^^

Auf das "StrToIntDef" bin ich gar nicht gekommen :-(

Wiedermal viel zu kompliziert gedacht von mir...
Danke!

Trotzdem würd mich die Frage noch interessieren, ob/wie ich den "Zelltyp" beim Export direkt festlegen kann - und zwar ohne dass Excel da noch irgendwas dran rum interpretieren kann/will.

shmia 19. Jun 2009 10:42

Re: Excel Zahl als Text interpretieren lassen
 
Zitat:

Zitat von Mongfice
Trotzdem würd mich die Frage noch interessieren, ob/wie ich den "Zelltyp" beim Export direkt festlegen kann - und zwar ohne dass Excel da noch irgendwas dran rum interpretieren kann/will.

Delphi-Quellcode:
[Range-Objekt].NumberFormat := '@';
Das Range-Objekt kann eine einzelne Zelle, aber auch eine ganze Spalte, Zeile oder das ganze Arbeitsblatt sein.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:43 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-2025 by Thomas Breitkreuz