python根据word⽣成ppt_python操作word、ppt的详解
python可以使⽤⼀个第三⽅库叫做win32com达到操作com的⽬的, 我是安装了ActivePython的第三⽅库,从官⽹下载了安装包,该第三⽅库⼏乎封装了所有python下⾯的win32相关的操作,例如win32api,win32gui等等,可以说是⽐较齐全的了,下载地址可以⾃⾏百度获取。
主要是有个项⽬可能要⽤到ppt转换成视频的功能。 之后在想使⽤com操作excel还有word,ppt的时候,相信⼤部分⼈跟我⼀样,都是搜索python如何操作ppt,或者win32com操作office之类的搜索语句, 搜索完毕之后,点进去之 后,⼏乎都直接是代码了,我觉得这样看得我云⾥雾⾥的,如果想做些其它操作都做不到,我当时的想法是想知道这些com的操作,究竟在哪⾥可以查的到,因 为⽹上只是有限的⼏个操作,注⼊往ppt添加图⽚,或者doc转成pdf之类的,⽽实际上的office的com操作时不⽌这些函数的,那么我们怎么知道 其它的api呢?这样⼦我们就可以脱离⽹上的代码,⾃⼰编写com代码了。
python默认安装路径⼀番查,⾕歌之后,在⼀个⽹页上终于到了答案:
Querying Interfaces
Now, how does one investigate the detail of each object? For example, how does one access the name of a folder? Firstly, it helps to know the interface that the object exposes, and this information can be found in several places:
The Microsoft API documentation.
Other useful sources, such as the "Outlook Exchange" documentation.
The interface file generated by the "COM Makepy utility". To know which file is relevant to the interface in question, either perform a "grep" search for the name of the interface on the win32com/gen_py directory within your Python distribution, or invoke an erroneous method or access a non-existent attribute on an object with that interface in order to see what the name of the interface file is.
The "OLE/COM Object Viewer" in the "Tools" menu in Microsoft Visual C++ (at least in Visual Studio 6.0).
Once opened, the "Interfaces" section of the information hierarchy can be explored to reveal some "_Application" entries.
For one of these, the information pane will mention "Microsoft Outlook 9.0 Object Library" under "TypeLib", for example.
Double-clicking on an "_Application" entry will provide an "ITypeInfo Viewer" which contains a "_Meth
ods" section describing the available methods on the application's automation object.
The "Type Libraries" section of the information hierarchy will list, for example, "Microsoft Outlook 9.0 Object Library", and this can be investigated by double-clicking on that entry.
Hopefully, however, the object that you are accessing is known well enough by PythonWin to permit some kind of attribute or method completion on it. You should only need to resort to the above when more detailed knowledge about a method or attribute is required. You can also try something like this:
dir(object.__class__)
The name of a folder can be accessed as follows:
object.Name # Where object refers to a folder.
这⾥的第四个⽅法就是我到的确认有效的,其它三个如果有兴趣的可以试试,第四个⽅法那就是ole/com object viewer⼯具,百度之下,下载了⼀个这样的⼯具,据说安装了vs之后是有的,
不过由于我不知道可执⾏程序的名字,也⽆从起,于是重新下载了⼀个完整的⼯具,安装之后
默认安装路径是:C:\Program Files (x86)\Resource Kit
我就是安装的时候点的太快,结果忘记了路径,重新点击安装,记下了路径。
这个⼯具名字叫做,打开的时候,提⽰缺少了什么dll,没关系。
因为我现在知道名字了,然后使⽤everything搜索了⼯具,在我的visual studio⾥⾯同样到了该⼯具,这下⼦可以完美打开了。
软件的界⾯样⼦⼤概是:
记得要在右侧的
Type Libraries⾥⾯到相关的library,这⾥我需要操作的是powerpoint,也就是ppt
到之后,双击打开它。
在右侧的就是⼀个列表,左侧的就是对于的内容,刚刚打开的时候,左侧显⽰的是完整的PowerPoint的api。
由于这个⼯具,不能够ctrl+f查,我们可以ctrl+a,复制左侧的内容到⽂本中,使⽤其他诸如sublime
⽂本编辑器执⾏查功能。
下⾯搜索⼀下:saveAs(⼤概就是这个意思,我想⼀个api可以另存为ppt为视频的操作)
我们到了这个函数,同时结合⽹上的例⼦,我们就知道怎么使⽤了,传⼊的第⼀个参数是FileName,顾名思义就是⽂件名,第⼆个是int 类型的fileFormat,如果是⽹上的例⼦的话,多半只会告诉你⼀个转换成pdf的代码,但是现在我要的是转成视频。
我们回到ole viewer,看看有没有fileformat的信息。 果不其然,发现了这样的代码:
PpSaveAsFileType
双击它
在最后,我到了ppSaveAsWMV,很好,这样⼦我们就可以结合⽹上的例⼦,修改了。
现在操作ppt的⽅法我们弄明⽩了,那么操作word,excel也是⼀样的道理。 顺便封装了⼀个comppt.py的操作,由于刚写python,代码不是很溜:
__author__ = 'zxc'
import win32com.client
import time
import os
ppSaveAsWMV = 37
# only for windows platform and with the microsoft office 2010 or above,it needs the library win32com
def cover_ppt_to_wmv(ppt_src,wmv_target):
ppt = win32com.client.Dispatch('PowerPoint.Application')
presentation = ppt.Presentations.Open(ppt_src,WithWindow=False)
presentation.CreateVideo(wmv_target,-1,4,720,24,60)
start_time_stamp = time.time()
while True:
time.sleep(4)
try:
print 'success'
break
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论