python中实现两个Excel之间Sheet的复制(保留原格式)
方法一(通用)
在前面
如果你的python
是x32
的,并且安装的是WPS
,可以考虑使用三方库win32com
来实现。
示例代码
import win32com.client as client
source_file = r"C:\Users\xxx\Desktop\test!.xlsx"
target_file = r"C:\Users\xxx\Desktop\test! - 副本.xlsx"
# xl = client.Dispatch("Excel.Application")
xl = client.gencache.EnsureDispatch("Ket.Application") # wps use
xl.Visible = 0 # 不显示
wb1 = xl.Workbooks.Open(Filename=source_file)
wb2 = xl.Workbooks.Open(Filename=target_file)
ws1 = wb1.Worksheets(1)
ws1.Copy(After=wb2.Worksheets('test1'))
wb1.Close(SaveChanges=False)
wb2.Close(SaveChanges=True)
xl.Quit()
- 结果示例
方法二(不通用)
在前面
如果你的python>=3.7 x64
,安装的是Microsoft Excel
,那么可以考虑使用三方库Spire.Xls for python
。需要注意的是,如果你没有它的license
,那么它会自动生成一个Evaluation Warning
的Sheet
,需要后期删除
- 官方文档中的说明
- 生成的Excel文件
示例代码
from spire.xls import Workbook, ExcelVersion
source_file = r"C:\Users\xxx\Desktop\test!.xlsx"
target_file = r"C:\Users\xxx\Desktop\test! - 副本.xlsx"
# 读取源数据表
sourceWorkbook = Workbook()
sourceWorkbook.LoadFromFile(source_file)
destWorkbook = Workbook()
destWorkbook.LoadFromFile(target_file)
# 复制之后的sheet名
sourceSheet = sourceWorkbook.Worksheets[0]
sheetName = sourceSheet.Name + "_Copy"
destSheet = destWorkbook.Worksheets.Add(sheetName)
# 复制
destSheet.CopyFrom(sourceSheet)
destWorkbook.CopyTheme(sourceWorkbook)
# 保存,根据Excel版本不同
destWorkbook.SaveToFile(target_file, ExcelVersion.Version2013)
# 释放
sourceWorkbook.Dispose()
destWorkbook.Dispose()
本文来自博客园,仅供参考学习,如有不当之处还望不吝赐教,不胜感激!转载请注明原文链接:https://www.cnblogs.com/rong-z/p/18245254
作者:cnblogs用户