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 ........
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