![]() |
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:
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...
for i:=0 to RecordCount - 1 do
begin Excel.Cells[i+5,1].Value:=FieldByName('ID').AsString; next; end; Beim Import der gleichen Daten nutze ich folgenden Code:
Delphi-Quellcode:
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...
repeat
edit; Fieldbyname('ID').AsString:= ActiveSheet.Cells.Item[x, 'A'].Value; Post; Inc(x, 1); until ActiveSheet.Cells.Item[x, 'A'].Value=''; 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 |
Re: Excel Zahl als Text interpretieren lassen
Hallo,
mal schmutzig hingeschrieben:
Delphi-Quellcode:
Achso: Nicht getestet, nur mal so als Workaround gedacht, eventuell hilfts ja.
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; |
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. |
Re: Excel Zahl als Text interpretieren lassen
Zitat:
Delphi-Quellcode:
Das Range-Objekt kann eine einzelne Zelle, aber auch eine ganze Spalte, Zeile oder das ganze Arbeitsblatt sein.
[Range-Objekt].NumberFormat := '@';
|
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