2012-02-16 2 views
1

Так что я пытаюсь скопировать много данных из одной книги в другую. Дело в том, что данные в исходной книге имеют некоторые странные формы, поэтому я хочу просто получить значения. Код, который у меня есть до сих пор, есть.Как вставить специальные в excel с python

excel=win32com.client.Dispatch("Excel.Application"); 
excel.Visible = 1; 
source = excel.Workbooks.Open(Cali.xlsm'); 
copy = excel.Workbooks.Open(temp.xlsx'); 
sdata = source.ActiveSheet;cdata = copy.ActiveSheet; 
data=sdata.Range("89:89") 
sdata.Range("89:89",data.End(4)).Copy() 

теперь я могу использовать

cdata.Paste() 

но вставляет форматирование, а

Я нашел

cdata.PasteSpecial() 

но и вставляет форматирование.

Любой, кто знает, как использовать PasteSpecial(), поэтому он копирует только значения или кто-то знает лучший способ, я был бы очень благодарен.

+2

просто идея: нет ли параметра, который вы можете передать .PasteSpecial(), который будет указывать специальную WHCIH-пасту для использования? В VBA значение xlPasteValues ​​имеет значение -4163. –

+0

Это то, что я думаю, но я все еще не уверен, как передать его, и я раньше не знал этого. Если я просто делаю cdata.PasteSpecial (-4163), я получаю сообщение об ошибке – paldives

+1

Помогает ли это? http://www.mail-archive.com/[email protected]/msg06368.html –

ответ

2

Вы можете попробовать следующее, которое копирует значения из ячеек A1: A3 из одной книги в другую.

from win32com.client import Dispatch 
wkbk1 = "...\workbook1.xlsx" 
wkbk2 = "...\workbook2.xlsx" 
excel = Dispatch("Excel.Application") 
excel.Visible = 1 
source = excel.Workbooks.Open(wkbk1) 
excel.Range("A1:A3").Select() 
excel.Selection.Copy() 
copy = excel.Workbooks.Open(wkbk2) 
excel.Range("A1:A3").Select() 
excel.Selection.PasteSpecial(Paste=-4163) 

wkbk1 и wkbk2 являются файловыми дорожками для двух книг.

+0

Хорошо с небольшой модификацией для ячеек, я хотел, чтобы это сработало. благодаря – paldives

Смежные вопросы