目录
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.获取示例代码
直接从这个地址下载压缩包或用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