如何在Python中使用Excel的特殊粘贴功能

1 投票
1 回答
13281 浏览
提问于 2025-04-17 13:08

我正在尝试把很多数据从一个工作簿复制到另一个工作簿。问题是,源工作簿里的数据格式有点奇怪,所以我只想要数据的值。到目前为止,我写的代码是这个。

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() 只复制值,或者有没有更好的方法,我会非常感激。

1 个回答

3

你可以试试下面这个方法,它可以把一个工作簿中的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是两个工作簿的文件路径。

撰写回答