Windows上开机自启BAT调用WPS的COM组件失败的解决方法
2023-03-14 22:57:36 时间
配置组件服务
Java中使用jacob调用WPS的COM组件的时候,手动启动可以,但是开机自启却不行
按 Win+R
快捷键进入运行菜单,输入
Dcomcnfg
找到: [组件服务]
=>[计算机]
=>[我的电脑]
=>[DCOM配置]
=>[wps……]
如果没找到(wps……):
按 Win+R
快捷键进入运行菜单
输入:
mmc -32
[文件]
——[添加或删除管理单元]
——[组件服务]
(从可用管理单元,添加到所选管理单元,点击:确定)
添加完以后,在控制台根节点下,找到[wps……],
右键设置属性,
设置标识
为:交互式用户
点击”安全”标签,
在”启动和激活权限”上点击”自定义”,然后点击对应的”编辑”按钮,在弹出的”安全性”对话框中填加
NETWORK SERVICE
用户(注意要选择本计算机名)IIS_IUSRS
并给它们赋予本地启动
和本地激活
权限;
在”访问权限”上点击”自定义”,然后点击”编辑”,在弹出的”安全性”对话框中也填加
NETWORK SERVICE
IIS_IUSRS
然后给他们赋予”本地访问”权限.
Java调用COM
工具类开头的宏说明 构件ActiveX组件实例
ActiveXComponent ax = new ActiveXComponent("name");
其中的 name 的值和你需要调用的ActiveX控件有关 每个 Dispatch 对象看成是对 ActiveX 控件的一个操作,这一步是获得该 ActiveX 控件的控制权
9.0之后的版本接口名称
MS控件名 | name |
---|---|
WPS文字 | KWPS.Aplication |
WPS的Excel | KET.Application |
WPS的演示文档 | KWPP.Application |
Word | Word.Application |
Excel | Excel.Application |
Powerpoint | Powerpoint.Application |
浅谈不同WPS的Api版本调用–老版本V8与新版本V9
对象名称修改
createobject("wps.applicaion")
修改为
createObject("kwps.application")
Python调用
安装依赖
pip install pypiwin32
代码
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import os
import win32com.client
def ConvertByWps(sourceFile, targetFile):
if not os.path.exists(sourceFile):
print(sourceFile + "不存在,无法继续!")
return False
typemap = {
'doc': 'word',
'docx': 'word',
'ppt': 'ppt',
'pptx': 'ppt',
'xls': 'excel',
'xlsx': 'excel',
}
name_arr = sourceFile.split(".")
suffix = name_arr[len(name_arr) - 1]
wpstype = typemap.get(suffix)
if (wpstype is None):
return False
os.system('taskkill /im wps.exe')
# 如果文件存在就删除
if os.path.exists(targetFile):
os.remove(targetFile)
if wpstype == 'word':
ConvertDocToPdf(sourceFile, targetFile)
elif wpstype == 'ppt':
ConvertPptToPdf(sourceFile, targetFile)
elif wpstype == 'excel':
ConvertXlsToPdf(sourceFile, targetFile)
if os.path.exists(targetFile):
return True
else:
return False
# 转换 Word文件档到pdf
def ConvertDocToPdf(src, dst):
wps = win32com.client.Dispatch("Kwps.Application")
wps.Visible = False
doc = wps.Documents.Open(src)
doc.ExportAsFixedFormat(dst, 17)
doc.Close()
wps.Quit()
# 转换 PPT文件档到pdf
def ConvertPptToPdf(src, dst):
wps = win32com.client.Dispatch("Kwpp.Application")
wps.Visible = False
ppt = wps.Presentations.Open(src)
ppt.SaveAs(dst, 32)
ppt.Close()
wps.Quit()
# 转换 XLS文件档到pdf
def ConvertXlsToPdf(src, dst):
wps = win32com.client.Dispatch("Ket.Application")
excel = wps.Workbooks.Open(src)
excel.ExportAsFixedFormat(0, dst)
excel.Close()
wps.Quit()
if __name__ == '__main__':
# 当前目录
d = os.path.dirname(__file__)
abspath = os.path.abspath(d)
# 测试用例
src = abspath + r"/Doc/test.docx"
dst = abspath + r"/Doc/test.pdf"
r = ConvertByWps(src, dst)
print(r)
相关文章
- java-io流
- Java NIO详解
- Java RMI入门
- Python-OpenCV教程-4
- java io库_Java IO类库之PipedWriter
- keyfactory java_Java KeyFactory getAlgorithm()用法及代码示例
- python TCP通信实例
- 【Java】Java人民币单位转换:分转换成元
- java.lang.ClassNotFoundException和java.lang.NoClassDefFoundError的区别
- python:isinstance()和issubclass()
- 关于 java:MyBatis 中的多线程服务器客户端
- Python Flask教程(一)
- web python -- WSGI接口
- 17 Python - 迭代
- PYTHON2.day07
- java join yield_java多线程 join/yield
- Java UDP通信:Java DatagramSocket类和DatagramPacket类
- 1.5的java,Java 1.5新特性
- java stringbuffer原理_java String、StringBuffer、StringBuilder 的区别
- python las转txt