在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 获得的结果相同。
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 获得的结果相同。