我有一个脚本,用于使用当前事件更新电子表格,并在它们存在超过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()
但这不会删除电子表格底部的突出显示或删除行,尽管打印语句中的数字看起来正确。