复印及;使用win32com粘贴隔离&;python
有没有一种方法可以使用python和win32com进行复制和粘贴,这样python脚本就可以在后台运行,而不会破坏“用户”的复制和粘贴功能复印及;使用win32com粘贴隔离&;python,python,excel,Python,Excel,有没有一种方法可以使用python和win32com进行复制和粘贴,这样python脚本就可以在后台运行,而不会破坏“用户”的复制和粘贴功能 from win32com.client import Dispatch import win32com.client xlApp = Dispatch("Excel.Application") xlWb = xlApp.Workbooks.Open(filename_xls) ws = xlWb.Worksheets(1) xlApp.Visible=
from win32com.client import Dispatch
import win32com.client
xlApp = Dispatch("Excel.Application")
xlWb = xlApp.Workbooks.Open(filename_xls)
ws = xlWb.Worksheets(1)
xlApp.Visible=False
ws.Range('a1:k%s' % row).select
ws.Range('a1:k%s' % row).cut
ws.Range('a7').select
ws.paste
假设脚本将在大量数据集上连续运行
好的,问题更清楚一些,我需要格式化,所有这些,所以获取t值当然很简单,但并不完全是需要的
那么,让我把问题表述为:
为什么不使用select、copy和paste例程在python中获取值及其excel格式?只需将数据读出到python中,然后将其写回即可 而不是:
ws.Range('a1:k%s' % row).select
ws.Range('a1:k%s' % row).cut
ws.Range('a7').select
ws.paste
ws.Range('a1:k%s' % row).select
ws.Range('a1:k%s' % row).cut
ws.Range('a7').select
ws.paste
逐个单元格处理数据:
for r in range(1, row+1): # I think Excel COM indexes from 1
for c in range (1, 12): # a--k
val = ws.Cells(r, c).Value
ws.Cells(r, c).Value = '' # Blank this cell; equivalent to cut
ws.Cells(?, ?).Value = val # Write it somewhere ..
我不确定将二维选择粘贴到单个单元格中做什么,所以我无法为您完成最后一行。你可能会发现你需要做两个循环;一个用于读取数据,然后第二个用于写回数据。而不是:
ws.Range('a1:k%s' % row).select
ws.Range('a1:k%s' % row).cut
ws.Range('a7').select
ws.paste
ws.Range('a1:k%s' % row).select
ws.Range('a1:k%s' % row).cut
ws.Range('a7').select
ws.paste
我做到了:
ws.Range("A1:K5").Copy(ws.Range("A7:K11"))
根据有点晚,但我想我有你的解决方案, 既然我找不到它,不管怎样它都会帮助别人的。 这段代码将复制所有内容(值、公式、格式等),而无需 使用选择(因此不会干扰用户,这比使用选择更快) 首先,我像这样打开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'))
要在保存格式、公式等的同时复制并粘贴到其他工作表上,请执行以下操作:
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'))
区分大小写。您不能直接访问数据并将其从一个单元格移动到另一个单元格,而不是使用复制和粘贴吗?实际上,我想剪切和粘贴的原因是捕获单元格的所有格式化属性,我正在复制一组具有格式化的文件,这些格式化需要花费大量时间来编写格式。或者,你如何在不复制的情况下复制所有值和格式。我不知道Excel模型的详细信息,但我敢打赌格式信息是公开的。您可能想看看文档。谢谢您的回答John,这当然适用于值,这很简单。。。我已经澄清了上面的问题,也就是说,如何获得所有的格式化。我意识到这是6年前的事了——但这是我能找到的唯一一个能够真正粘贴的解决方案。