使用 openpyxl 复制整个工作表

问题描述 投票:0回答:5

请有人给我一个例子,如何复制 带有样式的整个工作表(来自行和列) 到同一工作簿中的第二个工作表? (也可以在新的工作簿中)

谢谢你。

P.S.:我尝试进行深度复制,但未能保存更改的数据单元格。
目的是:我尝试用我的数据填充一些工作表,第一个工作表是我的模板。

我成功复制了值但只有一些样式。 我使用的是最新版本的 openpyxl,所以请不要使用 1.x 方法。

openpyxl
5个回答
30
投票

版本 2.4 将允许您执行此操作:copy_worksheet

>>> source = wb.active
>>> target = wb.copy_worksheet(source)

对于较旧的,您可以从这里

复制源代码

更新:您不能简单地将这段代码移植到旧版本库中


2
投票

你不能轻易做到这一点。最好的方法可能是bug 171

中描述的方法

1
投票

请注意,

copy_worksheet
方法不会复制数据验证。您可以使用 openpyxl 的
add_data_validation
手动执行此操作。一个完整的工作示例:

# Copy worksheet
workbook = openpyxl.load_workbook(source_excel)
sheet_to_copy = workbook[sheet_name]
new_sheet = workbook.copy_worksheet(sheet_to_copy)
new_sheet.title = new_sheet_name

# Copy data validations
for data_validation in sheet_to_copy.data_validations.dataValidation:
    new_sheet.add_data_validation(data_validation)

# Save result
workbook.save(source_excel)

0
投票

我也有同样的问题。我解决了使用复制而不是深度复制。我在这个网站

上找到了解决方案

我希望这对你有用!


0
投票

关于 @charlie-clark 和 @sam 答案上 Openpyxl 存储库的链接,自从存储库从 Bitbucket 移至 Gitlab 以来,这些链接不再起作用。

第 171 期的更新链接是 https://foss.heptapod.net/openpyxl/openpyxl/-/issues/171

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.