Python在Excel中将一个工作表复制到另一个工作表

时间:2015-04-10 07:22:10

标签: python excel python-2.7 excel-vba vba

我需要将一个Excel工作表复制到另一个工作表。到目前为止我发现的是FillAcrossSheets在Python中执行此操作。以下是我的代码:

import win32com.client as win32
excel = win32.gencache.EnsureDispatch('Excel.Application')

excel.Visible = False   #Keep the excel sheet closed
excel.DisplayAlerts = False  #"Do you want to over write it?" Will not Pop up

filepath = "C:/Pwr_Mgmt_Template.xlsx"

#Copy data from sheet named Template
sheetID = 'Template'

#Open the excel sheet
wb = excel.Workbooks.Open(filepath)

ws = wb.Worksheets(sheetID)

#Create a new sheet with name SATA-SkewData_Core1.1
ws = wb.Worksheets.Add()
ws.Name = "SATA-SkewData_Core1.1"
ws = wb.Worksheets(sheetID)

#Copy contents from Template to SATA-SkewData_Core1.1
wb.Worksheets.FillAcrossSheets(wb.Worksheets(sheetID).Range("A5:AF16"))

wb.Save()

excel.Application.Quit()

现在,如果我需要创建其他工作表,那么Fill Across Sheets方法也将复制到这些工作表并将销毁数据。而不是填写所有纸张,有没有办法有选择地从一张纸张复制到另一张纸张?

1 个答案:

答案 0 :(得分:0)

在标准程序中,我从两个不同的工作簿中打开了两个工作表。下面的行将模板工作表(ws_temp)复制到功率测量工作表(ws_pwr)。行号也可以作为参数提供,以便可以在同一工作表中复制相同的模板,但行号不同:

ws_temp.Range("A5:AF16").Copy(ws_pwr.Range("A%s:AF%s" % (chart_first_row, chart_last_row)))

从模板复制的行号分别为5和16。