簡體   English   中英

Openpyxl - 復制帶有合並單元格的工作表

[英]Openpyxl - copy worksheet with merged cells

我正在嘗試復制已合並單元格的工作表(在同一工作簿中),但出現錯誤。 我有相當長的模板,我可以復制這些模板,然后為不同的項目填充這些模板。 如果我取消合並所有單元格,我的代碼就可以工作,但這會弄亂所有格式。 我可以取消合並單元格,復制工作表,然后重新合並它們。 但是,有大量合並的單元格,我必須使用幾個不同的模板。 我對模板沒有任何控制權。 我正在使用 openpyxl 2.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'

我已經看到有關復制合並單元格樣式的其他問題,但這根本不會復制工作表。 有什么建議?

謝謝。

布蘭登

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

from openpyxl.worksheet.merge import MergedCellRange

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

MergedCellRange.__copy__ = clone

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM