Seite 1 von 1

Wert aus Excel Zelle auslesen

Verfasst: Freitag 13. Mai 2016, 15:43
von Duddel
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.

Re: Wert aus Excel Zelle auslesen

Verfasst: Freitag 13. Mai 2016, 15:56
von Sirius3
@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.

Re: Wert aus Excel Zelle auslesen

Verfasst: Freitag 13. Mai 2016, 15:58
von Duddel
ok danke...gäbe es irgendeinen Workaround?

Re: Wert aus Excel Zelle auslesen

Verfasst: Freitag 13. Mai 2016, 18:06
von BlackJack
@Duddel: Wofür denn genau? Wenn Dein Programm die Jahreszahl als Zeichenkette braucht, dann wandel halt die Zahl in eine Zeichenkette um.

Re: Wert aus Excel Zelle auslesen

Verfasst: Freitag 13. Mai 2016, 18:11
von ngulam
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))

Re: Wert aus Excel Zelle auslesen

Verfasst: Dienstag 17. Mai 2016, 11:31
von Duddel
vielen Dank.