天天看點

python win32com word_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檔案

'''

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)

看樣子還是失敗的例子。。.