Итак, я пытался добавить 6 строк в excelsheet. И я использовал openpyxl.worksheet.worksheet.Worksheet.insert_rows (ws, idx = 0, amount = 6), чтобы помочь мне выполнить задачу. Эта линия отлично работает с обычным файлом excel.
Но, когда дело доходит до файла excel, он содержит объединенные ячейки. Программа не будет работать правильно, как изображение, которое я прикреплял.
Может ли кто-нибудь дать мне некоторые идеи о том, как решить проблему. Я исчерпал все идеи и нуждался в вдохновении.
Большое спасибо за того, кто отвечает на мои вопросы !!
Скажем, вы хотите добавить 3 строки в верхней части таблицы, сначала вам нужно сменить объединенные ячейки, а затем вставить строки; Для этого мы будем использовать метод shift(col_shift=0, row_shift=0)
;
Help on method shift in module openpyxl.worksheet.cell_range:
shift(col_shift=0, row_shift=0) method of openpyxl.worksheet.cell_range.CellRange instance
Shift the range according to the shift values (*col_shift*, *row_shift*).
:type col_shift: int
:param col_shift: number of columns to be moved by, can be negative
:type row_shift: int
:param row_shift: number of rows to be moved by, can be negative
:raise: :class:'ValueError' if any row or column index < 1
Количество строк, которые вы хотите вставить, должно совпадать с количеством сдвигаемых строк; Поэтому для вашего примера вам просто нужно:
merged_cells_range = ws.merged_cells.ranges
for merged_cell in merged_cells_range:
merged_cell.shift(0,3)
ws.insert_rows(1,3)
Таким образом, в итоге объединенные ячейки сохраняются