Wert aus Excel Zelle auslesen

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
Duddel
User
Beiträge: 3
Registriert: Freitag 13. Mai 2016, 15:16

Hallo Python Profis,

ich versuche aus einer Excel-Zelle, die in Excel als Text formatiert ist und eine Jahreszahl beinhaltet (2015), den Wert und Typ auzulesen.

Dafür verwende ich folgendes Skript:

Code: Alles auswählen

sFile = r"hierderpfad"

xlvalue = xlrd.open_workbook(sFile)
sWerte_name = xlvalue.sheet_names()[0]
werte_sheet = xlvalue.sheet_by_name(sWerte_name)
particular_cell_value = werte_sheet.cell(3,11).value
print "Name: %s \n" % (sFile)
print particular_cell_value
print "\n"
print "Typ: %s" % (type(particular_cell_value))
Also Ergebnis bekomme ich folgendes:

Code: Alles auswählen

>>> 
Name: hierdername 

2015.0


Typ: <type 'float'>

Wieso bekomme ich den Type "float" ausgegeben wenn die Zelle jedoch in Excel als Text formatiert ist? Eigentlich sollte auch 2015 und nicht 2015,0 ausgegeben werden...

Anmerkung: Schreibe ich in Excel ein Hochkomma vor der Zahl (also '2015 ) bekomme ich so ein grünes Hinweissymbol ("als Text gespeicherte Zahl", mit der Anmerkung ob ich dies nicht in eine Zahl umwandeln möchte) in Excel und dann bekomme ich auch wie gewünscht "2015" und als type "unicode" ausgegeben. Wie schaffe ich es, dass ich jedoch ohne dieses Hochkomma sofort den richtigen Typ erhalte?

Vielen Dank.
Sirius3
User
Beiträge: 18216
Registriert: Sonntag 21. Oktober 2012, 17:20

@Duddel: das Hochkomma ist halt die Methode, wie Excel erkennen kann, dass es sich um Text und nicht um eine Zahl handelt. Antwort also: gar nicht.
Duddel
User
Beiträge: 3
Registriert: Freitag 13. Mai 2016, 15:16

ok danke...gäbe es irgendeinen Workaround?
BlackJack

@Duddel: Wofür denn genau? Wenn Dein Programm die Jahreszahl als Zeichenkette braucht, dann wandel halt die Zahl in eine Zeichenkette um.
Benutzeravatar
ngulam
User
Beiträge: 35
Registriert: Freitag 18. Oktober 2013, 11:03

Duddel hat geschrieben:ich versuche aus einer Excel-Zelle
Welches XLS Format?
Duddel hat geschrieben:in Excel als Text formatiert ist
Über das Format-Menü - oder wie beschrieben, mit einem vorangestellten Hochkomma?


Schon seltsam, ich bekomme bei 2 Testdateien, erstellt mit LibreOffice 4.1.6.2 unter Linux, in den Formaten "MS Excel 97/2000/XP/2003" und "MS 2007/2010 XLM (xlsx)" gespeichert jeweils die (reine)Jahreszahl und Typ: <type 'unicode'>.

Workaround? Für was willst Du das einsetzen?
Willst Du auf jeden Fall "Text" erhalten, dann prüfe auf nummerisch und konvertiere mit str(int(particular_cell_value))
งูหลาม
Duddel
User
Beiträge: 3
Registriert: Freitag 13. Mai 2016, 15:16

vielen Dank.
Antworten