如何用Python实现Excel工作表跨工作簿完整复制粘贴?
解决方案:批量复制Excel工作表并保留所有格式
一、Python方案:使用win32com.client(仅Windows环境)
这个库直接调用本地Excel程序,完全复刻你手动复制粘贴的操作逻辑,能100%保留所有格式、公式、列宽行高、折叠行等属性,是最贴合需求的方案。
示例代码
import win32com.client as win32 import os # 配置路径和参数 source_file = "C:/path/to/source.xlsx" source_sheet_name = "要复制的工作表" target_folder = "C:/path/to/target_workbooks/" # 初始化Excel应用 excel = win32.Dispatch("Excel.Application") excel.Visible = False # 后台运行,不显示窗口 excel.DisplayAlerts = False # 关闭弹窗提示 try: # 打开源工作簿并定位目标工作表 source_workbook = excel.Workbooks.Open(source_file) source_sheet = source_workbook.Worksheets(source_sheet_name) # 遍历目标文件夹下的所有Excel文件 for filename in os.listdir(target_folder): if filename.endswith(".xlsx") or filename.endswith(".xls"): target_path = os.path.join(target_folder, filename) target_workbook = excel.Workbooks.Open(target_path) # 将源工作表复制到目标工作簿的指定位置(这里是第一个工作表之前) source_sheet.Copy(Before=target_workbook.Worksheets(1)) target_workbook.Save() target_workbook.Close() finally: # 清理资源 source_workbook.Close() excel.Quit()
说明
- 需提前安装依赖库:
pip install pywin32 - 仅支持Windows系统,依赖本地安装的Excel程序
二、跨平台方案:使用xlwings
xlwings支持Windows和Mac双平台(Mac需安装Excel),同样通过调用原生Excel程序实现复制,完整保留所有工作表属性。
示例代码片段
import xlwings as xw import os source_file = "path/to/source.xlsx" source_sheet_name = "要复制的工作表" target_folder = "path/to/target_workbooks/" with xw.App(visible=False) as app: source_book = xw.Book(source_file) source_sheet = source_book.sheets[source_sheet_name] for filename in os.listdir(target_folder): if filename.endswith((".xlsx", ".xls")): target_path = os.path.join(target_folder, filename) target_book = xw.Book(target_path) # 将源工作表复制到目标工作簿的最后一个工作表之后 source_sheet.copy(after=target_book.sheets[-1]) target_book.save() target_book.close()
说明
- 安装命令:
pip install xlwings - 依赖本地安装的Excel程序,跨平台兼容性更好
三、其他语言方案:VBA脚本
如果不依赖Python,可直接编写VBA宏批量处理,同样能完整保留所有格式属性,适合纯Excel环境下的操作。
内容的提问来源于stack exchange,提问作者spierepf
相关产品推荐
相关产品推荐

