python wps linux_GitHub - timxx/pywpsrpc: Python bindings for WPS Office RPC (for Linux)

pywpsrpc是WPS Office for Linux的C++接口Python绑定库,允许开发者调用WPS执行文档自动化操作,如打开、编辑、保存、转换格式等。依赖Python 3.6+,Qt5,WPS Office 11.1.0.9080+。提供编译安装和PyPi安装两种方式,通过createXXXRpcInstance接口调起WPS进程,并通过示例展示了如何添加文本、设置格式和监听文档保存事件。
摘要由CSDN通过智能技术生成

pywpsrpc

WPS Office for Linux二次开发C++接口Python绑定.

Read this in other languages: English

WPS Office二次开发接口

WPS二次开发接口允许开发者通过给定的接口来调起WPS并执行指定的任务,

比如你可以打开、编辑然后保存文档,转换文档格式等文档自动化操作,又或者将WPS嵌入到自己的程序、进行功能扩展等。

C++ SDK头文件拷贝自wps_cpp,且无任何修改:

Copyright @ 2012-2019, Kingsoft office,All rights reserved.

对于pywpsrpc本身的文档,可跳转到wiki查看。

依赖

Python 3.6+

Qt5 (C++ SDK依赖)

WPS Office for Linux 11.1.0.9080+

sip 6.0+ (仅编译)

qmake (仅编译)

g++ (仅编译)

桌面环境(WPS运行需要)

PS,目前WPS整合模式有BUG,非把WPS嵌入到自己进程的场景建议先切换到多组件模式

如何编译

在项目顶层目录下运行终端执行: sip-build

如果需要查看编译相关输出信息,可添加 --verbose 选项

安装

建议通过PyPi安装:

pip install pywpsrpc

如果默认的源太慢,建议自行搜索添加中国pip源

通过源码编译安装:

先打包执行: sip-wheel

打包完成后再通过pip install pywpsrpc-*.whl命令安装

快速上手

# 第一步先import所需模块(rpcxxxapi,xxx为对应项目的名字)

# rpcwpsapi模块为WPS文字项目的开发接口

# rpcwppapi则是WPS演示的

# rpcetapi毫无疑问就是WPS表格的了

# 另外还有common模块,为前三者的公共接口模块,通常不能单独使用

# 调起WPS必需通过createXXXRpcInstance接口,所以导入它是必需的

# 以WPS文字为例

from pywpsrpc.rpcwpsapi import (createWpsRpcInstance, wpsapi)

from pywpsrpc import RpcIter

# 这里仅创建RPC实例

hr, rpc = createWpsRpcInstance()

# 注意:

# WPS开发接口的返回值第一个总是HRESULT(无返回值的除外)

# 通常不为0的都认为是调用失败(0 == common.S_OK)

# 可以使用common模块里的FAILED或者SUCCEEDED去判断

# 通过rpc实例调起WPS进程

hr, app = rpc.getWpsApplication()

# 比如添加一个空白文档

hr, doc = app.Documents.Add()

# 加点文字

selection = app.Selection

selection.InsertAfter("Hello, world")

# 将前面插入的"Hello, world"加粗

selection.Font.Bold = True

# 光标移到末尾

selection.EndKey()

# 再插入空段

selection.InsertParagraph()

# 光标移到新段

selection.MoveDown()

# 再码些文字

selection.TypeText("pywpsrpc~")

# 使用RpcIter遍历所有段

paras = doc.Paragraphs

for para in RpcIter(paras):

print(para.Range.Text)

# 或者通过索引方式

for i in range(0, paras.Count):

# 注意:首个元素总是从1开始

print(paras[i + 1].OutlineLevel)

def onDocumentBeforeSave(doc):

# 如果想取消当前文档保存,第二个返回值设为True

print("onDocumentBeforeSave called for doc: ", doc.Name)

# SaveAsUI, Cancel

return True, False

# 注册文档保存前通知

rpc.registerEvent(app,

wpsapi.DIID_ApplicationEvents4,

"DocumentBeforeSave",

onDocumentBeforeSave)

# 保存文档, onDocumentBeforeSave会被调用到

doc.SaveAs2("test.docx")

# 退出WPS进程

# 使用wpsapi.wdDoNotSaveChanges来忽略文档改动

app.Quit(wpsapi.wdDoNotSaveChanges)

例子

在服务器上运行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值