多线程情况下使用win32操作wps

如果多线程情况下直接使用win32操作wps,会报错:pywintypes.com_error: (-2147221008, '尚未调用 CoInitialize。', None, None)

此时需要线程初始化,参考自python调用win32api 拉起wps问题排查解决方案

import pythoncom
import win32
def ui():
    pythoncom.CoInitialize()
    wps = Dispatch("Kwps.Application")
    wps.Visible = True
    myWps = wps.Documents.Open(os.path.abspath("./12.docx"))
    myWps.Save()
    print("新线程")
    pythoncom.CoUninitialize()


b = threading.Thread(target=ui)
b.start()

完整代码如下:

"""
多线程情况下使用win32操作wps
"""

from tkinter import *
import time
import threading
import os
import xlwings as xw
from win32com.client import Dispatch
import pythoncom
import win32

# 主窗口
root_windows = Tk()
root_windows.geometry("300x320")

# 滚动条
s = Scrollbar(root_windows)
s.pack(side=RIGHT, fill=Y)

# 列表
lists = Listbox(root_windows, yscrollcommand=s.set, font=('Time', 15), width=320)
lists.pack()

# 绑定
lists.config(yscrollcommand=s.set)
s.config(command=lists.yview())


def add():
    n = 15
    for i in range(0, 15):
        lists.insert(lists.size(), i)
        lists.see(lists.size())
        time.sleep(1)


# 新线程往图形界面添加数据
t = threading.Thread(target=add)
t.start()


def ui():
    pythoncom.CoInitialize()
    wps = Dispatch("Kwps.Application")
    wps.Visible = True
    # 调用wps打开文档
    myWps = wps.Documents.Open(os.path.abspath("./12.docx"))
    myWps.Save()
    print("新线程")
    pythoncom.CoUninitialize()

# 新线程操作wps
b = threading.Thread(target=ui)
b.start()

root_windows.mainloop()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值