本文实例讲述了python读取word文档的方法。分享给大家供大家参考。具体如下:
首先下载安装win32com
1
2
3
4
5
6
|
from win32com import client as wc
word = wc.Dispatch( 'Word.Application' )
doc = word.Documents. Open ( 'c:/test' )
doc.SaveAs( 'c:/test.text' , 2 )
doc.Close()
word.Quit()
|
这种方式产生的text文档,不能用python用普通的r方式读取,为了让python可以用r方式读取,应当写成
1
|
doc.SaveAs( 'c:/test' , 4 )
|
注意:系统执行完成后,会自动产生文件后缀txt(虽然没有指明后缀)。
在xp系统下面,应当,
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
open (r 'c:\text' , 'r' )
wdFormatDocument = 0
wdFormatDocument97 = 0
wdFormatDocumentDefault = 16
wdFormatDOSText = 4
wdFormatDOSTextLineBreaks = 5
wdFormatEncodedText = 7
wdFormatFilteredHTML = 10
wdFormatFlatXML = 19
wdFormatFlatXMLMacroEnabled = 20
wdFormatFlatXMLTemplate = 21
wdFormatFlatXMLTemplateMacroEnabled = 22
wdFormatHTML = 8
wdFormatPDF = 17
wdFormatRTF = 6
wdFormatTemplate = 1
wdFormatTemplate97 = 1
wdFormatText = 2
wdFormatTextLineBreaks = 3
wdFormatUnicodeText = 7
wdFormatWebArchive = 9
wdFormatXML = 11
wdFormatXMLDocument = 12
wdFormatXMLDocumentMacroEnabled = 13
wdFormatXMLTemplate = 14
wdFormatXMLTemplateMacroEnabled = 15
wdFormatXPS = 18
|
照着字面意思应该能对应到相应的文件格式,如果你是office 2003可能支持不了这么多格式。word文件转html有两种格式可选wdFormatHTML、wdFormatFilteredHTML(对应数字 8、10),区别是如果是wdFormatHTML格式的话,word文件里面的公式等ole对象将会存储成wmf格式,而选用 wdFormatFilteredHTML的话公式图片将存储为gif格式,而且目测可以看出用wdFormatFilteredHTML生成的HTML 明显比wdFormatHTML要干净许多。
当然你也可以用任意一种语言通过com来调用office API,比如PHP.
1
2
3
4
5
|
from win32com import client as wc
word = wc.Dispatch( 'Word.Application' )
doc = word.Documents. Open (r 'c:/test1.doc' )
doc.SaveAs( 'c:/test1.text' , 4 )
doc.Close()
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
import re
strings = open (r 'c:\test1.text' , 'r' ).read()
result = re.findall( '\(\s*[A-D]\s*\)|\(\xa1*[A-D]\xa1*\)|\(\s*[A-D]\s*\)|\(\xa1*[A-D]\xa1*\)' ,strings)
chan = re.sub( '\(\s*[A-D]\s*\)|\(\xa1*[A-D]\xa1*\)|\(\s*[A-D]\s*\)|\(\xa1*[A-D]\xa1*\)' , '()' ,strings)
question = open (r 'c:\question' , 'a+' )
question.write(chan)
question.close()
answer = open (r 'c:\answeronly' , 'a+' )
for i,a in enumerate (result):
m = re.search( '[A-D]' ,a)
answer.write( str (i + 1 ) + ' ' + m.group() + '\n' )
answer.close()
chan = re.sub(r '\xa3\xa8\s*[A-D]\s*\xa3\xa9' , '()' ,strings)
#不要(),容易引起歧义。
|
希望本文所述对大家的Python程序设计有所帮助。