Python Openpyxl-使用合并单元格复制工作表

Python Openpyxl-使用合并单元格复制工作表,python,openpyxl,Python,Openpyxl,我试图复制已合并单元格的工作表(在同一工作簿中),但出现错误。我复制了相当长的模板,然后为不同的项目填充。如果我取消合并所有单元格,我的代码就可以工作,但这会弄乱所有格式。我可以拆开单元格,复制工作表,然后重新合并。但是,有大量合并的单元格,我有几个不同的模板需要使用。我对模板没有任何控制权。我正在使用OpenPYXL2.5.4 这是我的密码: wb = openpyxl.load_workbook(temp) wb.save(filename = "test.xlsx") pg = openp

我试图复制已合并单元格的工作表(在同一工作簿中),但出现错误。我复制了相当长的模板,然后为不同的项目填充。如果我取消合并所有单元格,我的代码就可以工作,但这会弄乱所有格式。我可以拆开单元格,复制工作表,然后重新合并。但是,有大量合并的单元格,我有几个不同的模板需要使用。我对模板没有任何控制权。我正在使用OpenPYXL2.5.4

这是我的密码:

wb = openpyxl.load_workbook(temp)
wb.save(filename = "test.xlsx")
pg = openpyxl.load_workbook("test.xlsx")
ws = pg.copy_worksheet(pg["sheet1"])
以下是错误:

Traceback (most recent call last):

  File "<ipython-input-41-a49f299a8c1f>", line 1, in <module>
    ws = pg.copy_worksheet(pg["sheet1"])

  File "C:\ProgramData\Anaconda3\lib\site-packages\openpyxl\workbook\workbook.py", line 394, in copy_worksheet
    cp.copy_worksheet()

  File "C:\ProgramData\Anaconda3\lib\site-packages\openpyxl\worksheet\copier.py", line 43, in copy_worksheet
    self.target.merged_cells = copy(self.source.merged_cells)

  File "C:\ProgramData\Anaconda3\lib\copy.py", line 88, in copy
    return copier(x)

  File "C:\ProgramData\Anaconda3\lib\site-packages\openpyxl\worksheet\cell_range.py", line 456, in __copy__
    n.ranges.append(copy(r))

  File "C:\ProgramData\Anaconda3\lib\copy.py", line 88, in copy
    return copier(x)

  File "C:\ProgramData\Anaconda3\lib\site-packages\openpyxl\worksheet\cell_range.py", line 136, in __copy__
    title=self.title)

TypeError: __init__() got an unexpected keyword argument 'min_col'
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
ws=pg.copy_工作表(pg[“sheet1”])
文件“C:\ProgramData\Anaconda3\lib\site packages\openpyxl\workbook\workbook.py”,第394行,在复制工作表中
cp.复制工作表()
文件“C:\ProgramData\Anaconda3\lib\site packages\openpyxl\worksheet\copier.py”,第43行,在copy\u工作表中
self.target.merged_cells=复制(self.source.merged_cells)
文件“C:\ProgramData\Anaconda3\lib\copy.py”,第88行,副本
复印机(x)
文件“C:\ProgramData\Anaconda3\lib\site packages\openpyxl\sheet\cell\u range.py”,第456行,复制__
n、 范围。追加(副本(r))
文件“C:\ProgramData\Anaconda3\lib\copy.py”,第88行,副本
复印机(x)
文件“C:\ProgramData\Anaconda3\lib\site packages\openpyxl\sheet\cell\u range.py”,第136行,复制__
title=self.title)
TypeError:\uuuu init\uuuuuuuuuuuuuuu()获得意外的关键字参数“min\u col”
我看到了关于复制合并单元格样式的其他问题,但这根本不会复制工作表。有什么建议吗

谢谢


布兰登

你可以很容易地用猴子修补它:

from openpyxl.worksheet.merge import MergedCellRange

def clone(self):
    return self.__class__(self.ws, self.coord)

MergedCellRange.__copy__ = clone

潜在的bug应该总是提交给openpyxl bug跟踪器。我刚刚打开了一个问题。