Существует проблема на трекере ошибок openpyxl, покрывающая это.Он был помечен как недопустимый.
Основная проблема заключается в том, что для того, чтобы это работало, все объединенные диапазоны ячеек должны быть проверены и обновлены после удаления строки.Существует несколько сложных / сложных вопросов аналогичного характера, которые, как считается, имеют минимальную ценность и поэтому не были реализованы.
Вы можете сделать это самостоятельно, если это необходимо.На листе имеется атрибут (merged_cells
), который можно обновить после удаления строки.
Код:
def delete_row_with_merged_ranges(sheet, idx):
sheet.delete_rows(idx)
for mcr in sheet.merged_cells:
if idx < mcr.min_row:
mcr.shift(row_shift=-1)
elif idx <= mcr.max_row:
mcr.shrink(bottom=1)
Код теста:
wb = openpyxl.load_workbook('csvfile.xlsx')
sheet = wb['Sheet2']
delete_row_with_merged_ranges(sheet, 6)
wb.save('csvfile2.xlsx')