Python实现Excel工作表之间的复制并保留原始格式

方法一(通用)

在前面

如果你的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()

    作者:cnblogs_user

    物联沃分享整理
    物联沃-IOTWORD物联网 » Python实现Excel工作表之间的复制并保留原始格式

    发表回复