python中实现两个Excel之间Sheet的复制(保留原格式)

方法一(通用)

在前面

如果你的pythonx32的,并且安装的是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 WarningSheet,需要后期删除

  • 官方文档中的说明
  • 生成的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()
posted @ 2024-06-13 09:43  cnblogs用户  阅读(95)  评论(0编辑  收藏  举报