Openpyxl Проблема: удаление строки не движущихся объединенных ячеек - PullRequest
0 голосов
/ 05 ноября 2018

У меня проблема с openpxyl, удаляющим строку и не перемещающим объединенные ячейки вверх. Например, на первом рисунке у меня есть две объединенные ячейки со значениями Alex & Bob. Когда я удаляю строку 2, Алекс перемещается вверх на одну ячейку, Боб удаляется, и положение объединенных ячеек остается на том же месте, в то время как остальные точки данных перемещаются вверх. При нормальной работе с Excel вне Python объединенные ячейки будут просто перемещаться вверх вместе с остальными данными. Похоже, что openpxyl хочет переместить значения данных вверх, но сохранить положение объединенных ячеек одинаковым. Какой обходной путь для этого? Заранее спасибо !!

Перед удалением строки 2:

enter image description here

ws.delete_rows(2)

Когда я удаляю строку 2, происходит следующее:

[1]: https://i.stack.imgur.com/NcdPF.png

Как это должно выглядеть, если вы удаляете вторую строку вручную в Excel: enter image description here

1 Ответ

0 голосов
/ 06 ноября 2018

Я нашел временное, но неудовлетворительное исправление.

Если я использую следующий код:

for merged_cell in ws.merged_cell.ranges:
    merged_cell.shift(0,-1)
ws.delete_rows(2)

Это решит мою проблему и переместит объединенные ячейки вверх. Тем не менее, единственная проблема, с которой я столкнулся в этом коде, заключается в том, что он перемещается вверх по ВСЕМ объединенным ячейкам в файле. Если я хочу переместить только объединенные ячейки вверх в столбце A, я не уверен, как сократить список диапазонов, чтобы включить только те, которые входят в.

Например, следующий код не работает, но выделяет то, что я пытаюсь выполнить с определенностью:

ws['A'].merged_cells.ranges
...