openpyxl-在具有合并单元格的excel文件中添加新行

时间:2018-07-31 19:16:28

标签: python excel python-3.x python-2.7 openpyxl

Before

After

所以,我试图在excelsheet中添加6行。 我用 openpyxl.worksheet.worksheet.Worksheet.insert_rows(ws,idx = 0,amount = 6) 帮助我完成任务。 该行适用于普通的excel文件。

但是,在excel文件中包含合并的单元格。该程序将无法正常工作,就像我附加的图像一样。

有人可以给我一些有关如何解决此问题的想法。我用光了所有的想法,需要一些启发。

非常感谢谁回答我的问题!

1 个答案:

答案 0 :(得分: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)

所以最终合并的单元格得以保留 enter image description here