当前位置: 首页 > news >正文

银河麒麟系统上利用WPS的SDK进行WORD的二次开发

目录

1.下载安装包

2.安装WPS

3.获取示例代码

4.编译示例代码

5.完整示例代码

相关链接


1.下载安装包

去wps的官网 https://www.wps.cn/ 下载linux版本。

下载的安装包名称为:wps-office_12.8.2.21176.AK.preload.sw_amd64.deb, 官网有介绍适用于Ubuntu、麒麟等操作系统。

2.安装WPS

安装的方法有很多,这里采用dpkg 和 apt 来安装。

如果你的麒麟系统是基于 Debian 或 Ubuntu 的,理论上可以直接使用 dpkg 来安装 .deb 文件,但可能需要一些额外的配置或依赖解决步骤。

1.安装 dpkg 和 apt

sudo apt-get install dpkg apt

2.使用 dpkg 安装 .deb 文件

sudo dpkg -i wps-office_12.8.2.21176.AK.preload.sw_amd64.deb

如果安装过程中缺少依赖,可以使用以下命令自动修复依赖:

sudo apt-get -f install

安装完后的路径:

直接在命令行执行:wps

能够启动,就说明安装成功!!!

3.获取示例代码

wps: wps二次开发系统集成相关 - Gitee.com

直接从这个地址下载压缩包或用git拉下来。

4.编译示例代码

源码目录结构如下:
          | -- include   WPS头文件,包含公共以及WPS,ET,WPP各自对应的api接口。
          | -- src          c++源代码文件。
          | -- README.md   帮助文件

 用qtcreator打开如下所示:

编译方法:

在终端中使用cd命令,进入代码的src目录,执行qmake命令。

执行make,在当前目录下会生成wpsDemo。

执行./wpsDemo,运行wpsDemo。

最终效果如图所示:

关键代码:

1.初始化

IKRpcClient * WPSWindow::initWpsApplication()
{IKRpcClient *pWpsRpcClient = NULL;HRESULT hr = createWpsRpcInstance(&pWpsRpcClient);if (hr != S_OK){qDebug() <<"get WpsRpcClient erro";return NULL;}BSTR StrWpsAddress = SysAllocString(__X("/opt/kingsoft/wps-office/office6/wps"));pWpsRpcClient->setProcessPath(StrWpsAddress);SysFreeString(StrWpsAddress);QVector<BSTR> vArgs;vArgs.resize(7);vArgs[0] =  SysAllocString(__X("-shield"));vArgs[1] =  SysAllocString(__X("-multiply"));vArgs[2] =  SysAllocString(__X("-x11embed"));vArgs[3] =  SysAllocString(QString::number(winId()).utf16());vArgs[4] =  SysAllocString(QString::number(width()).utf16());vArgs[5] =  SysAllocString(QString::number(height()).utf16());//-hidentp默认隐藏任务窗格//vArgs[6] =  SysAllocString(__X("-hidentp"));pWpsRpcClient->setProcessArgs(vArgs.size(), vArgs.data());for (int i = 0; i < vArgs.size(); i++){SysFreeString(vArgs.at(i));}m_rpcClient = pWpsRpcClient;return pWpsRpcClient;
}

2.新建文档

void WPSMainWindow::newDoc()
{if (m_spApplication){bool ret = m_spApplication->createDocument("wps");if (!ret){QMessageBox message(QMessageBox::NoIcon, QString::fromUtf8("提示"), QString::fromUtf8("新建失败"));message.exec();}}m_mainArea->setFocus();
}

3.插入表格

void WPSMainWindow::inserttable()
{if (m_spApplication){ks_stdptr<wpsapi::_Document> spActiveDoc;HRESULT hr = m_spApplication->get_ActiveDocument((wpsapi::Document**)&spActiveDoc);if (FAILED(hr)){QMessageBox message(QMessageBox::NoIcon, QString::fromUtf8("提示"), QString::fromUtf8("获取Document对象失败"));message.exec();return;}ks_stdptr<wpsapi::Range> spRange;hr = spActiveDoc->get_Content(&spRange);if (FAILED(hr)){QMessageBox message(QMessageBox::NoIcon, QString::fromUtf8("提示"), QString::fromUtf8("获取Range对象失败"));message.exec();return;}ks_stdptr<wpsapi::Tables> spTables;hr = spActiveDoc->get_Tables(&spTables);if (FAILED(hr)){QMessageBox message(QMessageBox::NoIcon, QString::fromUtf8("提示"), QString::fromUtf8("获取Tables对象失败"));message.exec();return;}long NumRows = 3;long NumColumns = 5;KComVariant DefaultTableBehavior;KComVariant AutoFitBehavior;ks_stdptr<wpsapi::Table> spTable;hr = spTables->Add(spRange, NumRows, NumColumns, &DefaultTableBehavior, &AutoFitBehavior, &spTable);if (FAILED(hr)){QMessageBox message(QMessageBox::NoIcon, QString::fromUtf8("提示"), QString::fromUtf8("添加表格失败"));message.exec();return;}}m_mainArea->setFocus();
}

4.另存为文档

void WPSMainWindow::saveAs()
{if (m_spApplication){QString saveFile = QFileDialog::getSaveFileName((QWidget*)parent(), QString::fromUtf8("保存文档"));if (!saveFile.isEmpty())m_spApplication->saveAs(saveFile);}m_mainArea->setFocus();
}

5.完整示例代码

下面是一个简单的示例代码,展示了如何使用WPS API创建一个新文档,打开一个已存在的文档,并将其保存为新的文件名。

#include <wps_api.h>
int main() {int result;WpsApplication *pApp = NULL;WpsDocument *pDoc = NULL;WpsDocument *pNewDoc = NULL;// 初始化WPS应用程序result = WpsAppInit(&pApp);if(result != WPS_SUCCESS) {printf("初始化WPS应用程序失败!错误代码:%d\n", result);return -1;}// 打开已存在的WPS文档result = WpsOpenDoc(pApp, "/path/to/your/document.wps", &pDoc);if(result != WPS_SUCCESS) {printf("打开文档失败!错误代码:%d\n", result);WpsAppDeinit(pApp);return -1;}// 创建新文档result = WpsCreateDoc(pApp, &pNewDoc);if(result != WPS_SUCCESS) {printf("创建新文档失败!错误代码:%d\n", result);WpsCloseDoc(pDoc);WpsAppDeinit(pApp);return -1;}// 进行文档操作...// 保存新文档result = WpsSaveAs(pNewDoc, "/path/to/your/new_document.wps");if(result != WPS_SUCCESS) {printf("保存文档失败!错误代码:%d\n", result);}// 清理资源WpsCloseDoc(pDoc);WpsCloseDoc(pNewDoc);WpsAppDeinit(pApp);return result == WPS_SUCCESS ? 0 : -1;
}

在上述代码中,首先使用WpsAppInit函数初始化WPS应用程序实例。随后,通过WpsOpenDoc函数尝试打开指定路径的文档。如果成功打开,就会得到一个WpsDocument的指针,该指针将用于接下来对文档的操作。接着,使用WpsCreateDoc函数创建一个新的空白文档实例,然后可以根据需要对新文档进行操作,比如添加文本、格式化等。完成编辑后,使用WpsSaveAs函数保存新文档到指定路径。

相关链接

  • WPS开放平台 : https://open.wps.cn/previous/docs/client/wpsLoad
  • WPS demo下载地址:wps: wps二次开发系统集成相关 - Gitee.com
  • Linux版WPS二次开发接口解析:https://wenku.csdn.net/column/5vo2inon6u
http://www.lryc.cn/news/577244.html

相关文章:

  • 【Oracle学习笔记】7.存储过程(Stored Procedure)
  • jvm的调优命令jstack打印堆栈信息阐述以及调优
  • 04_Americanas精益管理项目_数仓搭建
  • VMware vSphere 9与ESXi 9正式发布:云原生与AI驱动的虚拟化平台革新
  • QT控件 使用Font Awesome开源图标库修改QWidget和QML两种界面框架的控件图标
  • Maven 中,dependencies 和 dependencyManagement
  • 基于C++实现 bp 神经网络的手写数字识别
  • 【LeetCode 热题 100】239. 滑动窗口最大值——(解法一)滑动窗口+暴力解
  • 从0开始学习计算机视觉--Day06--反向传播算法
  • 【FR801xH】富芮坤FR801xH之PMU GPIO
  • Stable Diffusion 项目实战落地:从0到1 掌握ControlNet 第三篇: 打造光影字形的创意秘技-文字与自然共舞
  • [面试] js手写题-树转数组
  • 文心大模型 4.5 系列开源首发:技术深度解析与应用指南
  • uni-app使用uview2自定义tabber
  • PHP 全面解析:从入门到实践的服务器端脚本语言
  • 计算机网络中那些常见的路径搜索算法(一)——DFS、BFS、Dijkstra
  • Qt Quick 与 QML(四)qml中的Delegate系列委托组件
  • Python I/O 库 包 iopath
  • ExGeo代码理解(七)main.py(运行模型进行训练和测试)
  • 生成式人工智能实战 | 变分自编码器(Variational Auto-Encoder, VAE)
  • 如何让Excel自动帮我们算加减乘除?
  • PHP语法基础篇(七):函数
  • 电脑开机加速工具,优化启动项管理
  • 深入比较 Gin 与 Beego:Go Web 框架的两大选择
  • 深度学习04 卷积神经网络CNN
  • 国科大深度学习作业2-基于 ViT 的 CIFAR10 图像分类
  • 工业级PHP任务管理系统开发:模块化设计与性能调优实践
  • DBeaver 设置阿里云中央仓库地址的操作步骤
  • 提示技术系列——链式提示
  • 数据结构入门-图的基本概念与存储结构