如何使用Python完整复制包含富文本格式的Excel文件
如何使用Python完整复制包含富文本格式的Excel文件
嗨,我懂你想完整复制Excel文件(包括所有格式、内容)的需求!你手动用openpyxl写的代码虽然能复制部分字体样式,但其实有点舍近求远了——而且这种方式容易漏掉边框、单元格填充、合并单元格这些细节,效率也不高。下面给你两种更靠谱的方法:
方法一:直接复制整个文件(最简单高效,推荐)
如果你不需要对原Excel文件做任何修改,只是单纯复制一份一模一样的文件,用Python标准库的shutil模块就可以了。它会完整复制文件的所有内容,包括格式、公式、宏、图片这些openpyxl可能处理不了的元素,代码超简单:
import shutil # 原文件路径 source_file = 'file_1.xlsx' # 目标文件路径(不存在也没关系,会自动创建) target_file = 'file_1_copy.xlsx' # 执行复制,copy2会保留文件元数据(如创建/修改时间) shutil.copy2(source_file, target_file)
方法二:用openpyxl复制(适合需要修改内容的场景)
如果你需要加载原文件后做一些修改再保存为副本,其实不用逐单元格手动复制样式!直接加载原工作簿,然后另存为新文件名就可以保留大部分格式:
from openpyxl import load_workbook # 加载原Excel文件 wb = load_workbook('file_1.xlsx') # 直接另存为新文件,完成复制 wb.save('file_1_copy.xlsx')
不过要注意:openpyxl对一些复杂格式(比如VBA宏、某些特定图表)支持有限,如果你的Excel文件包含这些内容,还是用方法一更稳妥。
另外,你之前写的手动复制代码只处理了字体样式,却没覆盖单元格填充色、边框、对齐方式、合并单元格等细节,要是想手动处理所有样式得写大量冗余代码,完全没必要——用上面的方法就能轻松搞定啦!
备注:内容来源于stack exchange,提问作者Bast38




