openpyxl - добавление новых строк в файл Excel с существующей объединенной ячейкой

1

До

После

Итак, я пытался добавить 6 строк в excelsheet. И я использовал openpyxl.worksheet.worksheet.Worksheet.insert_rows (ws, idx = 0, amount = 6), чтобы помочь мне выполнить задачу. Эта линия отлично работает с обычным файлом excel.

Но, когда дело доходит до файла excel, он содержит объединенные ячейки. Программа не будет работать правильно, как изображение, которое я прикреплял.

Может ли кто-нибудь дать мне некоторые идеи о том, как решить проблему. Я исчерпал все идеи и нуждался в вдохновении.

Большое спасибо за того, кто отвечает на мои вопросы !!

  • 0
    Куда вы хотите вставить 6 строк? До строки «данные, данные, данные», или после? Можете ли вы представить картину ожидаемого результата, где должны появиться строки?
  • 0
    Я пытаюсь добавить 6 новых пустых строк перед «данными данных», спасибо за помощь :)
Показать ещё 7 комментариев
Теги:
excel
python-3.x
python-2.7
openpyxl

1 ответ

0
Лучший ответ

Скажем, вы хотите добавить 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)

Таким образом, в итоге объединенные ячейки сохраняются Изображение 174551

  • 1
    Большое спасибо за предоставленные мне решения. Ваше решение работает для меня очень хорошо! Вы гений :) Лишь несколько строк кода отлично решили мою проблему.
  • 0
    Рад, что смог помочь :) Извините, если это заняло у меня некоторое время, но я был занят, Хорошей недели!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню