Немного поздно, но я думаю, что у меня есть ваше решение,
и так как у меня были проблемы с поиском, это все равно кому-нибудь поможет.
Этот фрагмент кода скопирует все (значение, формулу, форматирование и т. Д.) Без
используя выборки (таким образом, не мешая вашим пользователям, и это быстрее, чем использование выборок)
Сначала я открываю Excel вот так:
xl = client.Dispatch("Excel.Application")
wb = xl.Workbooks.Open("c:/somepath/file.xls")
xl.Visible = 1
Для копирования и вставки на один лист с сохранением форматирования, формул и т. Д .:
ws = wb.Sheets("someSheet") #you can put the sheet number instead of it's name
ws.Range('a1:k%s' % row).Copy() #copy works on all range objects (ws.Columns(), ws.Cells, etc)
ws.Paste(ws.Range('a7'))
Для копирования и вставки на другой лист с сохранением форматирования, формул и т. Д .:
source_ws = wb.Sheets("SheetContainingData")
destination_ws = wb.Sheets("SheetWhereItNeedsToGo")
source_ws.Range('a1:k%s' % row).Copy()
destination_ws.Paste(destination_ws.Range('a7'))
с учетом регистра.