首页 > 代码库 > python处理word文件:win32com用法详解
python处理word文件:win32com用法详解
目标:用python处理doc文件
方法:引入win32com模块
**************************************************************************
一、安装
**************************************************************************
首先要先下载安装win32com模块(起先在linux下装不成功,后在windows下面成功了。。。)
下载地址:http://sourceforge.net/projects/pywin32/files/
python处理word文件:win32com用法详解
python处理word文件:win32com用法详解
python处理word文件:win32com用法详解找到正确匹配的
python处理word文件:win32com用法详解
python处理word文件:win32com用法详解python处理word文件:win32com用法详解python处理word文件:win32com用法详解
下载之后,安装即可:
python处理word文件:win32com用法详解
**************************************************************************
二、应用1 拷贝doc文件内容
**************************************************************************
现在,就可以用起来了。
以下是一个实例,将D:\a.doc中的内容复制到新的doc中去,新文件命名为D:\b.doc
mt.py
#-*- encoding: utf8 -*-
‘‘‘
Created on 2011-12-01
处理doc文件
@author :
‘‘‘
from win32com import client #将模块加载进来
python处理word文件:win32com用法详解word = client.Dispatch(‘Word.Application‘)
python处理word文件:win32com用法详解#word.Visible = 0
# 打开一个已存在的文件
python处理word文件:win32com用法详解doc = word.Documents.Open( r‘D:\a.doc‘)
# newdoc为新word文件
newdoc = word.Documents.Add()
python处理word文件:win32com用法详解docC = word.Documents.Count
#打印doc(第一个word文件)内容,中文不能打,报错
print doc.Content
python处理word文件:win32com用法详解#range = newdoc.Range(0,0)
range = newdoc.Range()#尾部
python处理word文件:win32com用法详解#range = newdoc.Range(doc.Content.Strat,doc.Content.end)
#range.InsertBefore(‘daisy‘)#在范围前写入字符串
python处理word文件:win32com用法详解range.InsertAfter(doc.Content)
newdoc.SaveAs(r‘D:\b.docx‘) #另存为b.docx(office2010)
# 关闭
doc.Close()
newdoc.Close()
word.Quit()
部分参考于:http://hi.baidu.com/?????/blog/item/70e7f388a7ea97ba0f244494.html
#链接word应用进程
#可视化1(可以看见该word进程),不可视0(后台运行word进程).
#后面打开的文件前面加r,不加的话后面的\就变成了转义字符。得是中文名
获取打开word进程个数,此时为2
取得Range物件,文件的最首端。
# 取得Range物件,范围整份文件
#将doc的内容添加到newdoc的最后
python处理word文件:win32com用法详解
**************************************************************************
二、应用2 实际应用
**************************************************************************
下面来实现最初的目的:将教育学文件夹下的02-09(教育学09.doc)年的试题合并到out.docx中去。
edutest.py
#-*- encoding: utf8 -*-
‘‘‘
Created on 2011-12-01
处理word文件
@author : xiaodi
‘‘‘
import os, string, shutil
from win32com import client
#原本叫做教师资格证,教育学
python处理word文件:win32com用法详解dirname = "D:\\Learning\\other\\Teacher\\Edu"
word = client.Dispatch(‘Word.Application‘)
newdoc = word.Documents.Add() #*0*.doc
python处理word文件:win32com用法详解for filen in os.listdir(dirname):
python处理word文件:win32com用法详解 if ‘0‘ not in filen:
continue
python处理word文件:win32com用法详解 fileinname = os.path.join(dirname,filen)
doc = word.Documents.Open( fileinname)
#fileoutname = os.path.join(dirname,‘out2.docx‘)
# print fileoutname
# shutil.copy(fileinname,fileoutname)
range = newdoc.Range()
range.InsertAfter(fileinname + ‘\n‘)
python处理word文件:win32com用法详解range.InsertAfter(doc.Content)
range.InsertAfter(‘\n‘)
doc.Close()
python处理word文件:win32com用法详解newdoc.SaveAs(r"D:\Learning\other\Teacher\Edu\out.docx")
newdoc.Close()
word.Quit()
print ‘ok‘
python处理word文件:win32com用法详解
**************************************************************************
三、总结
**************************************************************************
几年前搞的东西了,现在直接从原本存的word文档拷贝过来。(20131218)
看样子还是失败的例子。。.