目標:用python處理doc文件html
方法:引入win32com模塊python
**************************************************************************linux
1、安裝windows
**************************************************************************ui
首先要先下載安裝win32com模塊(起先在linux下裝不成功,後在windows下面成功了。。。)spa
下載地址:http://sourceforge.net/projects/pywin32/files/.net
python處理word文件:win32com用法詳解orm
python處理word文件:win32com用法詳解htm
python處理word文件:win32com用法詳解找到正確匹配的blog
python處理word文件:win32com用法詳解
python處理word文件:win32com用法詳解python處理word文件:win32com用法詳解python處理word文件:win32com用法詳解
下載以後,安裝便可:
python處理word文件:win32com用法詳解
**************************************************************************
2、應用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、應用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用法詳解
**************************************************************************
3、總結
**************************************************************************
幾年前搞的東西了,如今直接從本來存的word文檔拷貝過來。(20131218)
看樣子仍是失敗的例子。。.