Мне нужно скопировать один лист 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 также скопирует на эти листы и уничтожит данные. Есть ли способ выборочно копировать с одного листа точно на другой вместо того, чтобы заполнять все листы?

0
user3565150 10 Апр 2015 в 10:22

1 ответ

Лучший ответ

В стандартной процедуре я открыл два листа из двух разных книг. Строка ниже копирует рабочий лист шаблона (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 соответственно.

0
user3565150 14 Апр 2015 в 12:38