Некорректное удаление строки по ее номеру в openpyxl
пытаюсь удалить выбранные строки по их номерам, некоторые строки не удаляются, а некоторые столбцы начинают смещаться
from openpyxl import load_workbook
rowsList = [1,3,5,6,8,10]
wb = load_workbook('путь к файлу.xlsx')
currentSheet = wb.worksheets[0]
for i in rowsList:
currentSheet.delete_rows(i)
wb.save('путь к файлу.xlsx')
Ответы (2 шт):
Автор решения: Danis
→ Ссылка
Вы удаляете элемент, и все элементы которые находится слева от удалённого смещаются в лево.
from openpyxl import load_workbook
rowsList = [1,3,5,6,8,10]
wb = load_workbook('путь к файлу.xlsx')
currentSheet = wb.worksheets[0]
j = 0
for i in rowsList:
currentSheet.delete_rows(i - j)
j += 1
wb.save('путь к файлу.xlsx')
Автор решения: Интик
→ Ссылка
чтобы удаление произошло коррекно, нужно использовать reversed(rowsList).
from openpyxl import load_workbook
rowsList = [1,3,5,6,8,10]
wb = load_workbook('путь к файлу.xlsx')
currentSheet = wb.worksheets[0]
for i in reversed(rowsList):
currentSheet.delete_rows(i)
wb.save('путь к файлу.xlsx')