目标:用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)
看樣子還是失敗的例子。。.