xlrd使得很容易知道最后一列是什么.
使用win32com有一个简单的方法吗?
我尝试过使用ws.UsedRange.Rows.Count,但这似乎没有给出正确的答案.
我有关于excel的win32com绑定的问题.我设置了早期绑定,并遵循了O'Reilly的"Python编程在Win32上"一书中的一些例子.
以下代码工作正常:
book2.xlApp.Worksheets('Sheet1').Cells(1,1).Font.ColorIndex = 1
book2.xlApp.Worksheets('Sheet1').Cells(1,1).Font.ColorIndex = 2
Run Code Online (Sandbox Code Playgroud)
它根据数字改变整个单元格的字体颜色.但是这不起作用:
book2.xlApp.Worksheets('Sheet1').Cells(1,1).Characters(start,length).Font.ColorIndex = 1
Run Code Online (Sandbox Code Playgroud)
我得到以下回调:
Traceback (most recent call last):
File "<interactive input>", line 1, in <module>
AttributeError: Characters instance has no __call__ method
Run Code Online (Sandbox Code Playgroud)
但是在Excels VBA中,代码可以正常工作.任何人都能指出我的解决方案吗?我真的需要在excel单元格中更改字符串的一部分.
非常感谢你.
我收集了一些关于如何打开演示文稿并访问幻灯片和形状的示例.但我想做更多其他操作(例如,从指定幻灯片生成缩略图).我可以使用哪些方法?有没有说明所有功能的文件?
我需要通过Com接口连接和控制Autocad.为此,我使用Python.在我的第一次试用一个非常基本的片段,我得到一个错误.代码是
import win32com.client
acad = win32com.client.Dispatch("AutoCAD.Application")
doc = acad.ActiveDocument
doc.Utility.Prompt("Hello from Python\n")
Run Code Online (Sandbox Code Playgroud)
当我尝试运行它时,我得到了这个:
Traceback (most recent call last):
File "C:\Users\SBYSMR10\Desktop\recipe-440493-1.py", line 2, in <module>
acad = win32com.client.Dispatch("AutoCAD.Application")
File "C:\Python26\lib\site-packages\win32com\client\__init__.py", line 95, in Dispatch
dispatch, userName = dynamic._GetGoodDispatchAndUserName(dispatch,userName,clsctx)
File "C:\Python26\lib\site-packages\win32com\client\dynamic.py", line 108, in _GetGoodDispatchAndUserName
return (_GetGoodDispatch(IDispatch, clsctx), userName)
File "C:\Python26\lib\site-packages\win32com\client\dynamic.py", line 85, in _GetGoodDispatch
IDispatch = pythoncom.CoCreateInstance(IDispatch, None, clsctx, pythoncom.IID_IDispatch)
com_error: (-2147221005, 'Invalid class string', None, None)
Run Code Online (Sandbox Code Playgroud)
我安装了Python 2.6和Autocad LT 2009.我在网上搜索了一个解决方案,但找不到任何解决办法.那么你能帮我解决这个问题吗?
提前致谢
我的代码是
#Opens template for creating final report
excel = win32.dynamic.Dispatch('Excel.Application')
template = os.path.abspath((folderpath+'\Poop.xlsx'))
wb = excel.Workbooks.Open(template)
freshws= wb.Sheets("Fresh") #Sheet names must match perfectly
secws= wb.Sheets("sec")
cur.execute("Select * from FIRALL")
freshdata=list(cur.fetchall())
#writes to the first sheet
datarowlen=0
for i,a in enumerate(freshdata):
datarowlen = len(a)
for j,b in enumerate(a):
freshws.Cells(i+1,j+1).Value = a[j]
cur.execute("Select * from SECVE")
secdata=list(cur.fetchall())
#writes to the second sheet
datarowlen=0
for i,a in enumerate(secdata):
datarowlen = len(a)
for j,b in enumerate(a):
secws.Cells(i+1,j+1).Value = a[j]
#saves the report
wb.SaveAs()
wb.Close() …Run Code Online (Sandbox Code Playgroud) 我在这里有一段代码,它实际上可以使用 python win32com 在 excel 中格式化边框。我担心的是格式化边框所需的时间。我试图在 excel 中记录一个宏,以找出在我的脚本中转置它所需的信息,但它没有用。
所以我能做的最好的事情是在 for range 循环中运行,我总是从第 3 行开始,直到一个名为 shn[1] 的行计数器,增量为 1,从第 1 列到 10,增量为 1。从那里我使用“BorderAround()”,它工作正常但速度太慢。这是我的一段代码:
for shn in [("Beam-Beam", bb_row, bb_col), ("Beam-Col", bc_row, bc_col)]:
sheet = book.Worksheets(shn[0])
sheet.Range( "J3:DW3" ).Copy()
if shn[0] == "Beam-Col":
sheet.Range( "J3:AA3" ).Copy()
sheet.Range( sheet.Cells( 4, 10 ), sheet.Cells( shn[1]-1, 10 ) ).PasteSpecial()
for mrow in xrange(3,shn[1],1):
for mcol in xrange(1,10,1):
sheet.Cells(mrow, mcol).BorderAround()#.Border(1)
Run Code Online (Sandbox Code Playgroud)
我可以做些什么来格式化具有 ==> sheet.Range( sheet.Cells(3,1), sheet.Cells(shn[1],10) ) 之类的范围的边框?我试过“.Borders(11)”和“.Borders(12)”加上“.BorderAround()”,但只有“.BorderAround()”有效。
提前致谢。
简要背景:
我正在编写一个脚本来发送工作模板,但我通常会发送消息作为我们的团队邮件,以便在我的团队中实现可见性.大多数都按预期工作,但我错过了邮件来自行动或我做错了什么.通常,当我从"FROM"下拉菜单中制作消息时,我只在Outlook中选择备用发件人.

哪个属性会让我指定不同的发送地址?
就像是:
newMail.From = "mailer@my.org"
Run Code Online (Sandbox Code Playgroud)
我正在使用的简化版本发送HTML正文:
import win32com.client
olMailItem = 0x0
obj = win32com.client.Dispatch("Outlook.Application")
newMail = obj.CreateItem(olMailItem)
newMail.Subject = "the subject"
#newMail.Body = "body text"
newMail.HTMLBody = """<a href="https://google.com">Google Link</a>"""
newMail.To = "customer@example.org"
#newMail.CC = 'Bob'
#attachment1 = "c:\\mypic.jpg"
#newMail.Attachments.Add(attachment1)
newMail.Send()
Run Code Online (Sandbox Code Playgroud) 我需要使用pywin32方法以其他用户身份创建进程,然后从生成的进程中获取stdout,stderr和错误代码,以及在运行时将输入提要到进程中。问题是,我似乎无法为createprocess函数找到一个很好的例子。由于我需要以其他用户身份运行子进程,然后获取stderr,stdout,输入stdin并在完成后获取错误代码,这一事实使问题变得更加复杂。
这就是我访问收件箱的方式:
outlook = Dispatch("Outlook.Application").GetNamespace("MAPI")
inbox = outlook.GetDefaultFolder("6")
Run Code Online (Sandbox Code Playgroud)
当我尝试使用以下代码访问Outlook中用户创建的文件夹时:
outlook = Dispatch("Outlook.Application").GetNamespace("MAPI")
Folder = outlook.Folders[1]
print (Folder)
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
raise IndexError("list index out of range")
IndexError: list index out of range
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激。
在过去的几天里,我一直在为一些报告自动生成一些数据透视表。
归结为最低限度,以下代码可以正常工作:
import win32com.client
objExcelApp = win32com.client.gencache.EnsureDispatch('Excel.Application')
objExcelApp.Visible = 1
Run Code Online (Sandbox Code Playgroud)
这将弹出一个excel实例,我可以继续使用Python工作。但是突然之间,今天我的脚本因以下原因而失败:
>>>import win32com.client
>>> objExcelApp = win32com.client.gencache.EnsureDispatch('Excel.Application')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Program Files (x86)\Python37-32\lib\site-packages\win32com\client\gencache.py", line 534, in EnsureDispatch
mod = EnsureModule(tla[0], tla[1], tla[3], tla[4], bForDemand=bForDemand)
File "C:\Program Files (x86)\Python37-32\lib\site-packages\win32com\client\gencache.py", line 391, in EnsureModule
module = GetModuleForTypelib(typelibCLSID, lcid, major, minor)
File "C:\Program Files (x86)\Python37-32\lib\site-packages\win32com\client\gencache.py", line 266, in GetModuleForTypelib
AddModuleToCache(typelibCLSID, lcid, major, minor)
File "C:\Program Files (x86)\Python37-32\lib\site-packages\win32com\client\gencache.py", line 552, in AddModuleToCache
dict = mod.CLSIDToClassMap …Run Code Online (Sandbox Code Playgroud)