• 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()),才得以解决,但是具体原因还没有探明。

  • 相关阅读:
    Kubernetes 弹性伸缩全场景解析 (四)- 让核心组件充满弹性
    15分钟在笔记本上搭建 Kubernetes + Istio开发环境
    idea 插件的使用
    jQuery获取select元素选择器练习
    【Maven】添加ueditor到maven本地仓库
    jQuery序列化乱码解决
    Linux安装RedHat
    MyBatis SQL xml处理小于号与大于号
    js判断数据类型
    基于SSM框架的通用权限框架设计
  • 原文地址:https://www.cnblogs.com/AlgorithmDot/p/3386972.html
Copyright © 2020-2023  润新知