2015-08-20 3 views
5

Я пытаюсь прочитать из файла xls длинное число (6425871003976), но python продолжает транслировать его, прежде чем он читает его как число, а не строку (6.42587100398e + 12). Есть ли какой-либо метод для чтения непосредственно в виде строки, даже если вы в файле xls, это число?xlrd read number as string

values = sheet.row_values(rownum) 

значений оказывается правильно (6425871003976.0), но когда я пытаюсь значение [0] он уже переключился на неверное значение.

Решение:

Это было мое решение, использующее магнезии():

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

как же число появляется в листе Excel? он выглядит как 6.42587100398e + 12 (строка) или 6425871003976 (int). вы также можете добавить свою работу к вопросу. –

+0

номер появляется как 6.42587100398e + 12 –

ответ

2

Это то же значение. Все другое - это то, как значение печатается на экране. Научная нотация, которую вы получаете, заключается в том, что для печати вызывается номер str. Когда вы печатаете список значений, внутренний метод __str__ списка вызывает repr для каждого из его элементов. Вместо этого попробуйте print(repr(values[0])).

+0

спасибо, это сработало –

0

Это пример, который принесет значение ячейки (в вашем случае это целое число), вам необходимо преобразовать его в строку, используя функцию str.

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

использование print "%d" %(values[0])

% d используется для печати значения целых чисел