zoukankan      html  css  js  c++  java
  • python win32com在读取word文档时,遇到的问题

    1. 使用多线程编程,且需要调用win32com模块来打开word文档时,常见的错误如下:

    IDispatch = pythoncom.CoCreateInstance(IDispatch, None, clsctx, pythoncom.IID_IDispatch)
    com_error: (-2147221008, 'xc9xd0xcexb4xb5xf7xd3xc3 CoInitializexa1xa3', 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()),才得以解决,但是具体原因还没有探明。

  • 相关阅读:
    第九周进度条
    梦断代码阅读笔记01
    NABCD分析
    软件工程个人作业05
    HDU 3949 XOR(线性基)
    luogu 2115 破坏(01分数规划)
    luogu 1360 阵容均衡(前缀和+差分+hash)
    luogu 1967 货车运输(最大生成树+LCA)
    luogu 1344 追查坏牛奶(最小割)
    BZOJ 2007 海拔(平面图最小割转对偶图最短路)
  • 原文地址:https://www.cnblogs.com/AlgorithmDot/p/3386972.html
Copyright © 2011-2022 走看看