Zahl als Text in Excel importieren

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
walker
User
Beiträge: 3
Registriert: Donnerstag 26. Januar 2006, 11:40

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
modelnine
User
Beiträge: 670
Registriert: Sonntag 15. Januar 2006, 18:42
Wohnort: Celle
Kontaktdaten:

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.
walker
User
Beiträge: 3
Registriert: Donnerstag 26. Januar 2006, 11:40

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.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

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
:-)
Zuletzt geändert von gerold am Donnerstag 26. Januar 2006, 13:38, insgesamt 1-mal geändert.
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

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
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
walker
User
Beiträge: 3
Registriert: Donnerstag 26. Januar 2006, 11:40

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
brasil66
User
Beiträge: 27
Registriert: Mittwoch 20. Juli 2005, 19:01
Wohnort: Braunschweig

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:
helmut
User
Beiträge: 57
Registriert: Mittwoch 2. November 2005, 07:45
Wohnort: Dormagen

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
Antworten