2015-08-20 5 views
5

Ich versuche, aus einer xls-Datei eine lange Zahl zu lesen (6425871003976), aber Python trunking es, bevor es liest es als eine Zahl nicht eine Zeichenfolge (6.42587100398e + 12). Gibt es eine Methode, um es direkt als String zu lesen, auch wenn es in der xls-Datei eine Nummer ist?xlrd read Nummer als String

values = sheet.row_values(rownum) 

in Werten, die es richtig angezeigt wird (6425871003976,0), aber wenn ich Werte versuchen [0] eingeschalteten Zustand bereits auf den falschen Wert.

Lösung:

Dies war meine Lösung mit repr():

if type(values[1]) is float: 
    code_str = repr(values[1]).split(".")[0] 
else: 
    code_str = values[1] 
product_code = code_str.strip(' \t\n\r') 
+0

wie funktioniert die Zahl erscheint in dem Excel-Blatt verwendet? es erscheint wie 6.42587100398e + 12 (string) oder 6425871003976 (int). Bitte fügen Sie auch Ihre Arbeit zu der Frage hinzu. –

+0

die Nummer erscheint wie 6.42587100398e + 12 –

Antwort

2

Es ist der gleiche Wert. Alles andere ist, wie der Wert auf dem Bildschirm gedruckt wird. Die wissenschaftliche Notation erhalten Sie, weil zum Drucken die Nummer str aufgerufen wird. Wenn Sie die Werteliste drucken, ruft die interne __str__-Methode der Liste für jedes Element repr auf. Versuchen Sie stattdessen print(repr(values[0])).

+0

Danke, das hat funktioniert –

0

Dies ist ein Beispiel, das den Wert einer Zelle (in Ihrem Fall es ein int ist) bringen, Sie müssen Sie es in eine Zeichenfolge mit der Str-Funktion konvertieren

from openpyxl import load_workbook 
wb = load_workbook(filename='xls.xlsx', read_only=True) 
ws = wb['Sheet1'] 
for row in ws.rows: 
    for cell in row: 
     cell_str=str(cell.value) 
0

Verwendung print "%d" %(values[0])

% d wird zum Drucken ganzzahlige Werte