Seite 1 von 1

Zahl als Text in Excel importieren

Verfasst: Donnerstag 26. Januar 2006, 12:22
von walker
Hallo,
trotz intensiver suche habe ich noch keine Lösung für folgendes Problem gefunden:
Ich möchte eine Zahl, die ich aus einem Textfile auslese, als Text formatiert in Excel einlesen, da Excel die Zahl rundet, wenn sie aus mehr als 15 Stellen besteht. Mein Excel-File wird immer neu erstellt, so kann ich die Spalte nicht vorher formatieren.Der Aufruf

for line in lines:
xlApp.ActiveSheet.Cells(x,1).Value = "%s" % str(line[10:40])
x += 1

bringt leider nichts. Die Zahlen werden als Zahl behandelt und gerundet in Excel umgewandelt.
Ich bin für jeden Tip oder einen Link dankbar.

walker

Verfasst: Donnerstag 26. Januar 2006, 12:26
von modelnine
Excel kennt den Unterschied zwischen "Zahl" und "Textfeldern" nicht, zumindest nicht im COM-Interface. Alles wird als string übergeben.

Setz mal das Format der Zelle auf Zeichenkette, und es sollte tun. Das kannst Du direkt in Excel machen, oder aber auch über COM, wobei ich nicht weiß wie man letzteres macht.

--- Heiko.

Verfasst: Donnerstag 26. Januar 2006, 12:49
von walker
Das Excel-File wird erst mit dem Script erstellt, aus dem obiger Code stammt, und ich möchte das Excel-File auch nicht öffnen und das Format einstellen, sondern alles über COM machen.

Trotzdem Danke für deine Hilfe.

Re: Zahl als Text in Excel importieren

Verfasst: Donnerstag 26. Januar 2006, 13:30
von gerold
walker hat geschrieben:for line in lines:
xlApp.ActiveSheet.Cells(x,1).Value = "%s" % str(line[10:40])
x += 1
Hi walker!

Kurze Rede -- damit ist es für uns leichter...: Codehighlighting

mfg
Gerold
:-)

Re: Zahl als Text in Excel importieren

Verfasst: Donnerstag 26. Januar 2006, 13:37
von gerold
walker hat geschrieben: Ich möchte eine Zahl, die ich aus einem Textfile auslese, als Text formatiert in Excel einlesen
Hi walker!

Vielleicht hilft dir das bereits:

Code: Alles auswählen

for line in lines:
    xlApp.ActiveSheet.Cells(x,1).Value = '="%s"' % str(line[10:40])
    x += 1
Evt. Musst du es aber als Formel und nicht als Wert eintragen.

Code: Alles auswählen

for line in lines:
    xlApp.ActiveSheet.Cells(x,1).Formula = '="%s"' % str(line[10:40])
    x += 1
mfg
Gerold
:-)

Verfasst: Donnerstag 26. Januar 2006, 14:00
von walker
Hi Gerold,

Super, es hat mit Value und mit Formula funktioniert. Allerdings wird der Wert dann in der Bearbeitungsleiste mit ="" angezeigt, aber ich glaube das macht nichts aus.

Herzlichen Dank für deine Hilfe

walker

Verfasst: Freitag 27. Januar 2006, 09:57
von brasil66
und achte auf jeden Fall auf führende Nullen! Auch wenn eine Spalte als TEXT definiert ist, schneidet Excel bei reinen Zahlen gerne mal führende Nullen ab.
Kann sehr lästig sein ........ :lol:

Verfasst: Freitag 27. Januar 2006, 12:35
von helmut
Hallo walker,

bei der manuellen Eingabe von Zahlen in Excel, die Text sein sollen, gibt man ein ' vor der Zahl ein. Das muesste auch im Programm klappen; also:

Code: Alles auswählen

xlApp.ActiveSheet.Cells(x,1).Value = " ' %s" % str(line[10:40])
Die Leerzeichen wurden nur der Deutlichkeit halber eingefuegt.

Gruss, Helmut