如何在openpyxl中移动单元格区域及其属性(超链接,格式化等)?

时间:2017-08-01 09:01:55

标签: python excel openpyxl

我想创建一个脚本来移动一些(或所有)单元格。这是我的代码想法,但我不知道如何实现最后一行(向右移动5个单元格的例子):

new_rows = []
for row in ws.rows:
    new_rows.append((None,) * 5 + row)
ws.rows = new_rows

2 个答案:

答案 0 :(得分:1)

您还可以使用“ move_range”在工作表中移动单元格区域。

这会将A8:Z8范围内的单元格向上移动一列,并向右移动两列。

ws.move_range("A8:Z8", rows=-1, cols=2)

如果单元格包含公式,则可以添加“ translate = True”

ws.move_range("A8:Z8", rows=-1, cols=2, translate=True)

您还可以在移动后添加格式。

    for cell in col:
        cell.number_format = '0%'

这会将单元格值转换为百分比值。

希望有帮助!

答案 1 :(得分:0)

经过长时间的研究,我发现没有简单而漂亮的方法来复制具有所有属性的细胞范围。您需要分别遍历范围和每个单元格副本值和每个属性。复制单个单元格的示例函数看起来是这样的:

ws.cell(row=to_row, column=to_col).value = ws.cell(row=from_row, column=from_col).value
from_style = ws.cell(row=from_row, column=from_col)._style
ws.cell(row=to_row, column=to_col)._style = from_style
ws.cell(row=to_row, column=to_col).hyperlink = ws.cell(row=from_row, column=from_col).hyperlink
ws.cell(row=to_row, column=to_col).number_format = ws.cell(row=from_row, column=from_col).number_format