Нужна помощь, пожалуйста! Кажется простой задачей - мне нужно получать значения из определенных ячеек электронных таблиц и суммировать их. Но я потерпел неудачу даже на первом шаге - вытащил их. Сначала я подумал, что неправильно с модулем (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
Джон, ты потрясающий! Thanx так много, мужик! (Хорошо, черт возьми, я искал какие-то хитрые причины, в то время как ошибка была очевидна!) –