#python #openpyxl
from openpyxl import load_workbook wb = load_workbook(filename = 'TEST.xlsx') ws = wb.active ws1 = ws['B3':'B7'] for i in ws1: for cell in i: print (max(cell)) Есть определенный диапазон с датами в Excel файле. Мне нужно выбрать раннюю / позднюю дату. Пробовал различными способами, выдают разную ошибки. Как это сделать?
Ответы
Ответ 1
Ошибки у вас потому, что вы получаете не данные из ячеек, а кортеж-ссылку. Кроме того, буквенно-цифровые индексы уже стараются не употреблять, поскольку openpyxl теперь старается работать с таблицей в канонической системе адресации (номер столбца: номер ряда). Вот у меня для файла test.xls A 1 12.01.1976 2 05.02.1980 3 30.11.2018 4 03.07.2007 получается такое решение: from openpyxl import load_workbook wb = load_workbook('test.xlsx', data_only=True) sheet = wb.active mycol=1 #номер столбца. A=1, B=2 и т.д myrow = list(range(1,5)) # диапазон строк (1:4) print(max(sheet.cell(row=x,column=mycol).value for x in myrow)) print(min(sheet.cell(row=x,column=mycol).value for x in myrow)) На выходе: 2018-11-30 00:00:00 1976-01-12 00:00:00 В общем, все работает, хотя, конечно, строки лучше бы перевести в timestamp и потом сравнивать.Ответ 2
Модуль Pandas сильно упрощает и ускоряет работу с Excel файлами: import pandas as pd # pip install pandas s = pd.read_excel(r'C:\Temp\files.xlsx', skiprows=2, header=None, usecols=[1], squeeze=True) print(s.min()) #2000-12-31 00:00:00 print(s.max()) #2018-11-30 00:00:00 Можно прочитать весь Excel файл в pandas DataFrame: df = pd.read_excel(r'C:\Temp\files.xlsx')Ответ 3
Вместо for i in ws1: for cell in i: print (max(cell)) используйте print(max([c.value for c in ws1]))
Комментариев нет:
Отправить комментарий