You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何深度复制openpyxl中通过load_workbook加载的Workbook对象?

如何深度复制openpyxl加载的Workbook对象?

直接执行wb2 = wb1只是让两个变量指向同一个Workbook对象,修改wb2会直接改动wb1的内容,要实现真正的深度复制,可以通过以下方式完成:

方法:创建新工作簿并复制所有内容(含VBA)

针对你加载的带VBA的xlsm文件,可通过以下代码实现完整的深度复制:

# Cell 3 实现深度复制
import openpyxl
from copy import deepcopy

# 创建新的空工作簿
wb2 = openpyxl.Workbook()
# 删除默认生成的空白工作表
wb2.remove(wb2.active)

# 逐个复制原工作簿的所有工作表
for ws in wb1.worksheets:
    copied_ws = wb2.copy_worksheet(ws)
    # 若有特殊工作表属性需要保留,可在此额外处理

# 保留原文件的VBA代码(仅当原工作簿开启keep_vba=True时有效)
if wb1.vba_archive:
    wb2.vba_archive = deepcopy(wb1.vba_archive)

使用说明

  • 在Jupyter Notebook中,只需加载一次wb1(Cell2),后续每次需要新的副本时,重新运行Cell3即可生成独立的wb2对象。
  • 修改wb2的内容(比如删除工作表)不会对wb1产生任何影响,wb1始终保持原始加载状态。

注意事项

  • 复制大型工作簿仍需一定时间,但远快于重新从文件加载。
  • 若工作表包含复杂公式、图表或宏,复制后建议验证功能是否正常,避免出现内容丢失或异常。

内容的提问来源于stack exchange,提问作者Brian Gonzalez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 21:54:57