python win32com在讀取word文檔時,遇到的問題


1. 使用多線程編程,且需要調用win32com模塊來打開word文檔時,常見的錯誤如下:

IDispatch = pythoncom.CoCreateInstance(IDispatch, None, clsctx, pythoncom.IID_IDispatch)
com_error: (-2147221008, '\xc9\xd0\xce\xb4\xb5\xf7\xd3\xc3 CoInitialize\xa1\xa3', None, None)

將第二行error中的第二項,打印出來是:“尚未調用 CoInitialize”,那么在代碼中加入如下兩行代碼,即可解決:

import pythoncom
pythoncom.CoInitialize()

那么pythoncom是用來做什么的呢?

在網址http://docs.activestate.com/activepython/2.4/pywin32/pythoncom.html中,查詢pythoncom的CoInitialize()函數的解釋是:

Initialize the COM libraries for the calling thread.

2. 讀取word文檔的內容,常見錯誤是,讀英文的時候,沒有問題,但是碰到中文的時候,就會報錯,見下面代碼:

1 import win32com
2 from win32com.client import Dispatch
3 msword = Dispatch('Word.Application')
4 msword.Visible = 0
5 msword.DisplayAlerts = 0
6 doc = msword.Documents.Open(FileName=u"J:\\study.docx", Encoding='gb18030')
7 range = doc.Range(doc.Content.Start, doc.Content.End)
8 text = range.__str__()

出現的錯誤是:

UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-18: ordinal not in range(128)

修改成unicode(range),還是報錯,后修改成text = unicode(range()),才得以解決,但是具體原因還沒有探明。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM