Страницы

Поиск по вопросам

среда, 5 февраля 2020 г.

Как вывести раннюю / позднюю дату?

#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]))

Комментариев нет:

Отправить комментарий