python Win32模块

一、准备:

        pywin32模块 下载地址

        Jython 下载地址

注意事项:当下载pywin32模块要选择合适的一个,首先依据python版本,然后参考python是32位还是64位的



由于是32位的python 2.7.14因此选择pywin32-223.win32-py2.7.exe

此外下载Jython的时候,保证有jdk.其中对应关系为Jython2.5要求jdk5以上,Jython2.6要求jdk6以上.


在自己机器上测试中(已安装jdk8),发现Jython 2.7.0中安装后目录下没有jython.bat文件,因此不能运行.建议不要选Jython 2.7.0.综合考虑后选择的是Jython 2.5.2.

安装jython2.5.2配置环境变量,将Jython安装目录加入path.然后cmd输入jython进入交互式界面。但是输入print "hello world"的时候却不显示字符串结果,依然在等待输入.也就是换行后显示的是...,或者进行规范操作的时候却报jython LookupError,请参考jython控制台编码


二、与Excel交互

# -*- coding: cp936 -*-
from Tkinter import Tk
from time import sleep
from tkMessageBox import showwarning#以上三个是为了使用消息框来演示过程
import win32com.client as win32

warn=lambda app:showwarning(app,'Exit?')#展示消息
RANGE=range(3,8)#循环打印

def excel():
    app='Excel'
    x1=win32.gencache.EnsureDispatch('%s.Application' %app)#静态启用
    ss=x1.Workbooks.Add()#添加工作簿
    sh=ss.ActiveSheet#当前工作表
    x1.Visible=True#可见
    sleep(1)

    sh.Cells(1,1).Value='Python-to-%s Demo' % app#在1行1列写入数据
    sleep(1)
    for i in RANGE:
        sh.Cells(i,1).Value='Line %d' % i
        sleep(1)
    sh.Cells(i+2,1).Value="Th-th-th-that's all folks!"

    warn(app)#消息框
    ss.Close(False)#不保存离开
    x1.Application.Quit()#退出程序

if __name__=='__main__':
    Tk().withdraw()#先绘出最顶层的窗口,否则系统会自动创建一个然后一直停留在屏幕上
    excel()

运行后:



三、与word交互

# -*- coding: cp936 -*-
from Tkinter import Tk
from time import sleep
from tkMessageBox import showwarning#以上三个是为了使用消息框来演示过程
import win32com.client as win32

warn=lambda app:showwarning(app,'Exit?')
RANGE=range(3,8)#循环打印

def excel():
    app='Word'
    word=win32.gencache.EnsureDispatch('%s.Application' %app)#静态启用
    doc=word.Documents.Add()#添加文档
    word.Visible=True#可见
    sleep(1)

    rng=doc.Range(0,0)#光标位置
    rng.InsertAfter('Python-to-%s Test\r\n\r\n' % app)#插入
    sleep(1)
    for i in RANGE:
        rng.InsertAfter('Line %d\r\n' % i)
        sleep(1)
    rng.InsertAfter("\r\nTh-th-th-that's all folks!\r\n")

    warn(app)#消息框
    doc.Close(False)#不保存离开
    word.Application.Quit()#退出程序

if __name__=='__main__':
    Tk().withdraw()#先绘出最顶层的窗口,否则系统会自动创建一个然后一直停留在屏幕上
    excel()

运行后:


对于ppt和outlook,因为运行报错,这里不再展示.


姑且认为是下载的pywin32模块不匹配.注意上面的文件保存文件名的后缀为.pyw为好


四、Jython

当配置好Jython之后就可以使用Java中的很多包,比如java.awt

from pawt import swing
import sys
from java.awt import Color,BorderLayout

def quit(e):
    sys.exit(0)

top=swing.JFrame("PySwing")
box=swing.JPanel()
hello=swing.JLabel("Hello World")#标签
quit=swing.JButton("QUIT",actionPerformed=quit,background=Color.red,foreground=Color.white)#按钮,注册事件并添加颜色

box.add("North",hello)
box.add("South",quit)
top.contentPane.add(box)#布局
top.pack()#自动设置合适大小
top.visible=1#可见

打开cmd,进入文件所在目录,使用jython abc.py.结果:



五、总结

    基本上很多语言都可以和excel,word等交互,比如mathlab中自带的函数,操作excel配合matlab矩阵以及科学计算真的是强大;还有java的POI,java可以很轻松实现各种繁杂的操作而且完全面向对象,效率高稳定性好,能够实现很好的交互;python的pywin32模块也实现了组件的交互,python容易理解表达能力强,在自动化控制和系统管理以及脚本语言本身的特性方面优势很大,利用python实现交互,熟练掌握是很适合用来与excel,word等办公软件的结合.

    Jython是一个很伟大的工具,既有java的各种api还有Python自动的函数库。除此之外,Jython的运行速度比python要快,默认的python是Cpython.Jython可以让工作更加轻松.

猜你喜欢

转载自blog.csdn.net/whitenigt/article/details/80113631