在openpyxl中插入行+移动单元格

Insert row + shifting cells in openpyxl

openpyxl是否支持插入行的方法with "shift cells right/down"?

我正在考虑在特定列中插入一些单元格。这是为了修复 "Header" 和 "Total" 之间的动态数据,同时获取 Header 和 Total 之间的单元格格式。 (参见 Excel 参考)。

尝试使用 insert_row 方法,但它确实为整个 row/column 插入(如果我在这里错了请纠正我) https://openpyxl.readthedocs.io/en/stable/_modules/openpyxl/worksheet/worksheet.html#Worksheet.insert_rows

Excel Reference

如有任何意见、反馈或建议,我们将不胜感激!提前致谢!!

(来源:

我相信您正在寻找的方法是openpyxl.worksheet.worksheet.Worksheet.move_range()。此方法允许您移动工作表中的一系列单元格。您可以指定要移动范围的行数和/或要移动范围的列数。这是该方法的文档字符串:

    """
    Move a cell range by the number of rows and/or columns:
    down if rows > 0 and up if rows < 0
    right if cols > 0 and left if cols < 0
    Existing cells will be overwritten.
    Formulae and references will not be updated.
    """

注意:目标单元格中​​的任何内容都将被覆盖

我创建了一个由 9x9 网格填充的示例工作表来进行演示。

from openpyxl import Workbook

wb = Workbook()

dest_filename = 'empty_book.xlsx'

ws1 = wb.active

# create a 9x9 grid of numbers
for row in range(1, 10):
    ws1.append(range(10))

# move some numbers
ws1.move_range("H5:J9", rows=2, cols=3)

# move some numbers down 1 row
ws1.move_range("A3:B9", rows=1)

wb.save(filename = dest_filename)

瞧!范围 H5:J9 向下移动了 2 行并向右移动了 3 列,范围 A3:B9 向下移动了 1 行。这与在正常 Excel 中使用 Insert>Shift cells down 和 Insert>Shift cells right 获得的结果相同。