У меня есть скрипт, который обновляет электронную таблицу с текущими событиями и удаляет их по истечении x дней.Таблица становится очень большой.У меня есть логика, которая добавляет строки, когда приходят новые события, и удаляет строки старше x дней.Самые последние события находятся внизу таблицы.
Люди работают над этой таблицей и иногда выделяют строки.Я хотел бы сохранить это выделение таким образом, чтобы при запуске сценария и перемещении строки 80 (выделенный) в строку 40, строка 40 выделялась, а 80 - нет.У меня проблема в том, что 80 также остаются выделенными.Поэтому мне нужна функция для удаления всех строк, которые не имеют текста (но могут иметь подсветку).
Это то, что у меня есть:
def deleteEmptyRows(file, sheet_name):
"""Remove empty rows from bottom of excel file.
Issue: If I highlight row 80 and the script runs,
moving that row to row 40, both row 40 and 80 will
be highlighted.
Solution: delete empty rows (only containing highlighting)
at the bottom of the excel file. This also helps keep
the file smaller."""
book = openpyxl.load_workbook(file)
writer = pd.ExcelWriter(file, engine='openpyxl')
writer.book = book
writer.sheets = {ws.title: ws for ws in book.worksheets}
maxRow = len(pd.read_excel(file)) + 2
sheetLen = int("".join([x for x in writer.sheets[sheet_name].calculate_dimension().split(':')[1]
if x.isalpha() == False]))
openpyxl.worksheet.worksheet.Worksheet.delete_rows(writer.sheets[sheet_name]
,idx=maxRow, amount=(sheetLen-maxRow))
print('delete {} rows starting at row {}'.format((sheetLen-maxRow), maxRow))
writer.save()
Но это не удалениевыделение в нижней части электронной таблицы или удаление строк, хотя события в операторе печати выглядят правильно.