2017-02-21 53 views
1

Нужна помощь, пожалуйста! Кажется простой задачей - мне нужно получать значения из определенных ячеек электронных таблиц и суммировать их. Но я потерпел неудачу даже на первом шаге - вытащил их. Сначала я подумал, что неправильно с модулем (openpyxl регулярно обновляется, и я что-то пропустил), но модуль xlrd дал те же неправильные результаты! Вот код:xlrd & openpyxl извлекает неправильные значения ячейки (Excel)

import xlrd, xlwt 
wb = xlrd.open_workbook(r"E:\Projects_working (11).xlsx") 
sheet = wb.sheet_by_name('Language Process') 
for i in range(1, 100): 
    cellVal = sheet.cell(i, 14).value #need to find "5" in column 14 
     if type(cellVal) == float and cellVal == 5.0: #need to read corresp. 
      print(sheet.cell(i, 11).value)   #values в column 11 

В результате, вместо целого числа (скажем, 22), код заканчивается с поплавком 42782.61458. (Другие значения аналогичны и неправильны: 42782.66146, 42781.38542, 42781.42708 и т. Д.)

Ориентировочно я использовал модуль openpyxl и добавил флаг data_only = True для загруженной книги: wb = load_workbook ("file.xlsx", DATA_ONLY = True). Этот код дает те же результаты. Без этого флага все получают странные формулы: = B32 + ((M32-B32)/2), = B41 + ((M41-B41)/2) и т. Д. Вот код для этих формул (без флага):

import openpyxl 
wb = openpyxl.load_workbook(r"E:\Projects_working (11).xlsx") 
sheet = wb.get_sheet_by_name('Language Process') 
for i in range(1, 100): 
    cellVal = sheet.cell(row=i, column=14).value 
     if type(cellVal) == float and cellVal == 5.0: 
      print(sheet.cell(row=i, column=11).value) 

А вот ссылка на файл, на всякий случай: https://docs.google.com/spreadsheets/d/1bFhkEs8JTVWCgZoW5_9lQ1q_T0gtijBhuywr6OVpfGc/edit?usp=sharing

ответ

0

данные, которые вы читаете выглядеть версии в Excel исходных значений даты и времени. Вероятно, вы ошиблись в столбцах (то есть, указав неверный индекс столбца).

+0

Джон, ты потрясающий! Thanx так много, мужик! (Хорошо, черт возьми, я искал какие-то хитрые причины, в то время как ошибка была очевидна!) –