Appearance
OPAddIn使用说明
1. 软件介绍
1.1. 功能说明
OPAddIn以加载宏的方式注册成Excel/WPS插件,提供了获取openPlant实时数据、历史数据和统计数据的多种函数,并支持SQL语句获取数据。用户能通过这些函数获取实时数据库的任意数据,并将其展示在Excel/WPS任意单元格内,为客户自定义报表的制作提供了便捷操作,用户可基于OPAddIn方便的开发高级应用。
1.2. 使用****说明
使用要求:OPAddIn支持Excel2007及其以后的版本,支持WPS2023及以后版本版本。
OPAddIn加载项的参数,既可以是字符串、数字等常见数据类型,也可以是单元格地址类型。在本程序提供的菜单界面中,点名参数对以上类型均做了支持,用户可以手工输入点名(或者通过查询界面帮助输入),也可以通过紧跟的【选定】项来选择点名所在的单元格地址。当然这两项内容不会同时有效,若点名输入框不为空,则程序会选取点名输入框中内容为参数,反之则以选定框中内容为参数,若两者都为空,程序会报错提示。
2.软件部署
2.1. 软件位数确认
请在使用本软件前,确认Excel/WPS软件位数。根据对应的位数选择适配的OPAddIn软件程序。
2.1.1 Excel32位或64位版本
查看方法可参考如下截图:

2.1.2 WPS软件32位版本
WPS软件均为32位版本。
查看方法可参考如下截图:

2.2. 部署说明
2.2.1将软件解压至C盘
OPAddIn软件无需安装,解压即可使用。但是OPAddIn工具必须安装在C盘。请务必将OPAddIn软件包解压至C盘根目录。
WPS压缩包解压示例如下,请必须确保解压后目录和图示一致:
Excel压缩包解压示例如下,请必须确保解压后目录和图示一致:
2.2.2将软件解压至C盘
(1) 若Excel/WPS为32位时,必须选用32位软件。
Excel插件32位文件截图:
32位文件介绍:
| 名称 | 功能 |
| opapi4.dll | 数据库动态库 |
| op-excel-addin.txt | 记录数据库连接信息 |
| OP-Excel-AddIn-packed.xll | 软件主程序 |
Excel插件64位文件截图:
64位文件介绍:
| 名称 | 功能 |
| opapi4.dll | 数据库动态库 |
| op-excel-addin.txt | 记录数据库连接信息 |
| OP-Excel-AddIn64-packed.xll | 软件主程序 |
WPS插件文件夹截图:
32位文件介绍:
| 名称 | 功能 |
| Lib | 动态库,不可随意修改 |
| Scripts | 脚本目录,不可随意修改 |
| share | OPAddin软件主程序目录 |
| tools | 主程序辅助工具,不可随意修改 |
| 其他文件 | 环境依赖文件,不可随意修改 |
Tools文件内为WPS注册表刷新程序和.NET框架组件安装程序。两个工具均为OPAddIn辅助工具。
| 名称 | 功能 |
| MicrosoftNETFrameworkV452.exe | .NET框架安装程序 |
| FlushWPSReg.exe | WPS注册表刷新程序 |
3. Excel加载OPAddIn
(1)打开已存在的Excel文件,或者新建Excel文件,点击【文件】菜单项中的【选项】-【加载项】,选中Excel加载项,点击转到,跳出加载项对话框;


(2)加载项对话框,点击【浏览】,找到OPAddIn文件路径,根据系统32位/64位,选中对应的xll文件,打开。
(3)在Excel文件界面,将增加openPlant菜单。
(4)如果想要移除,可修改程序路径,Excel无法加载则可移除:
4. WPS加载OPAddIn
(1)打开已存在的WPS文件,或者新建WPS表格文件,点击【工具】菜单项中的【加载项】,跳出加载项对话框。
(2)加载项对话框,点击【浏览】,找到OPAddIn文件路径,添加C:\OP-WPS-AddIn\py\share\xloil\xlOil.dll,选中xlOil.dll文件,打开。

WPS打开过程中如果遇到如下报错,代表加载项写注册表错误。请关闭WPS表格,执行软件文件夹tools里FlushWPSReg.exe(该程序会刷新注册表),再次启动WPS表格重复上述加载步骤即可。
(4)如果想要移除该加载项,如果想要移除,可修改程序路径,WPS无法加载则可移除。
5. OPAddIn使用说明
5.1. 连接openPlant
5.1.1. WPS设置连接
WPS需要在配置文件中修改数据库连接信息。配置文件位置是 C:\OP-WPS-AddIn\py\share\xloil\config.ini):
配置文件内容如下:
[database]
host = 192.168.2.76
port = 8200
user = sis
password = openplant
timeout = 60请根据你的环境填入真实连接信息,host(IP地址)、port(数据库服务端口)、user(用户名)和password(密码)。
当数据库连接成功后,用户就可以开始在表格页面选择相应openPlant函数进行数据分析工作。
5.1.2. Excel设置连接
点击openPlant菜单中【设置连接】,跳出数据库连接配置界面。输入实时数据库IP、端口、用户名和密码,点确定即可完成数据库连接操作。用户可通过【测试】,检测数据库是否可以连通。

当数据库连接成功后,用户就可以开始在表格页面选择相应openPlant函数进行数据分析工作。
5.2. SQL操作OPSQL()
5.2.1. 函数说明
OPSQL()(sql,align)
函数功能:通过输入SQL语句来获取数据
参数说明:
| 参数 | 说明 | 解释 |
| sql | SQL语句 | openPlant支持的数据库SQL语句 |
| align | 输出格式 | 选填,默认为0。0:竖排,1:横排 |
输出说明:
根据不同SQL语句所查询字段,返回字段名和字段对应结果
函数示例:
=OPSQL("select ID,GN from point order by id limit 5 ",0)
=OPSQL("select ID,GN ,ED from point where GN like '%sys%'",0)
=OPSQL("select gn,av,tm from archive where id=104041 and tm between '2021-12-09 09:00:00' and '2021-12-09 10:00:00' ",0)
=OPSQL("select gn,av,tm from realtime where id in(104041,104047,104052)",0)
=OPSQL("select * from alarm",0)
5.2.2. 使用示例
在表格空白区域框选输入框,输入框请根据预期结果字段数进行框选。例如,期望查询测点ID和GN字段,期望返回前5个测点信息,则在表格框选如下区域,并输入函数:=OPSQL("select ID,GN from point limit 5",0),按Ctrl+Shift+Enter或者Enter,查询结果将填入选择区域。
查询测点函数示例如下:
=OPSQL("select ID,GN ,ED from point where GN like '%sys%'",0),结果示例:
=OPSQL("select gn,av,tm from archive where id=104041 and tm between '2021-12-09 09:00:00' and '2021-12-09 10:00:00' ",0),结果截图:
=OPSQL("select gn,av,tm from realtime where id in(104041,104047,104052)",0)结果截图:
5.3. 实时数据查询OPReal()
5.3.1. 函数说明
OPReal()(gns,align)
函数功能:通过输入测点名称来获取对应实时数据
参数说明
| 参数 | 说明 |
| gns | 所查询的点名队列或单元格区域,单元格区域必须是单行或单列 |
| align | 选填,默认为0。0:竖排,1:横排 |
| 输出说明: | |
| 根据点名查询实时数据,返回测点对应的实时数据 | |
| 函数示例: | |
| =OPReal({"W3.SYS.LOAD","W3.SYS.DBMEM"},0) | |
| =OPReal(E2:E6,0) |
5.3.2. 使用示例
框选需要放入实时值的区域,并输入函数OPReal(),选中需要查询实时数据的测点名称区域,输入示例函数:=OPReal(E2:E6,0),按Ctrl+Shift+Enter或者Enter,查询结果将填入选择区域。

程序支持手工输入测点名称。例如需要查询W3.SYS.LOAD和W3.SYS.DBMEM两个测点的实时值,先框选需要放入实时值的区域,示例函数:=OPReal({"W3.SYS.LOAD","W3.SYS.DBMEM"},0),按Ctrl+Shift+Enter或者Enter,查询结果将填入选择区域。
5.4. 历史时刻值同步查询OPValue()
5.4.1. 函数说明
OPValue(gn,tm)
函数功能:通过输入测点名称和历史时刻,获取指定测点指定历史时刻的历史时刻值,同步模式查询
参数说明
| gn | 所查询的点名或单元格区域 |
| tm | 历史时刻或单元格区域 |
| 输出说明: | |
| 返回测点指定历史时刻的历史时刻值 | |
| 函数示例: | |
| =OPValue(E2,"2021-12-10 15:00:00") | |
| =OPValue("W3.SYS.LOAD","2021-12-10 15:00:00") |
5.4.2. 使用示例
框选需要放入历史时刻值的区域,并输入函数OPValue(),选中需要查询数据的测点名称,输入示例函数:=OPValue(E2,"2021-12-10 15:00:00"),按Ctrl+Shift+Enter或者Enter,查询结果将填入选择区域。

5.5. 历史时刻值异步查询OPValueAsync()
该函数仅在Excel模式下提供。
5.5.1. 函数说明
OPValueAsync(gn,tm)
函数功能:通过输入测点名称和历史时刻,获取指定测点指定历史时刻的历史时刻值,异步模式查询
参数说明
| gn | 所查询的点名或单元格区域 |
| tm | 历史时刻或单元格区域 |
| 输出说明: | |
| 返回测点指定历史时刻的历史时刻值 | |
| 函数示例: | |
| =OPValueAsync(E2,"2021-12-10 15:00:00") | |
| =OPValueAsync("W3.SYS.LOAD","2021-12-10 15:00:00") |
5.5.2. 使用示例
框选需要放入历史时刻值的区域,并输入函数OPValueAsync(),选中需要查询数据的测点名称,输入示例函数:=OPValueAsync(E2,"2021-12-10 15:00:00"),按Ctrl+Shift+Enter或者Enter,查询结果将填入选择区域。

5.6. 等间距历史查询OPSpan()
5.6.1. 函数说明
OPSpan()(gns,start,end,interval,align)
函数功能:通过输入测点名称、开始时间、结束时间和时间间隔等参数获取历史等间距值
参数说明
| 参数 | 说明 |
| gns | 所查询的点名队列或单元格区域,单元格区域必须是单行或单列 |
| start | 起始时刻或单元格区域 |
| end | 结束时刻或单元格区域 |
| interval | 等间距间隔,单位:秒 |
| align | 选填,默认为0。0:竖排,1:横排 |
| 输出说明: | |
| 返回测点对应的历史数据,包括历史时刻和等间距历史数据 | |
| 函数示例: | |
| =OPSpan(E2:E6,"2021-12-10 15:00:00","2021-12-10 16:00:00",3600,0) | |
| =OPSpan(E2:E6,H2,H3,3600,0) | |
| =OPSpan({"W3.SYS.LOAD","W3.SYS.DBMEM"},"2021-12-10 15:00:00","2021-12-10 16:00:00",3600,0) |
5.6.2. 使用示例
框选需要放入历史等间距值的区域,并输入函数OPSpan(),选中需要查询数据的测点名称区域,输入示例函数:=OPSpan(E2:E6,"2021-12-10 15:00:00","2021-12-10 16:00:00",1800,0),按Ctrl+Shift+Enter或者Enter,查询结果将填入选择区域。
请注意:
1)历史数据包括历史时刻和历史值,需要两列空间。
2)历史间隔,单位为秒。程序将根据开始和结束时间并以历史间隔分段,顺序返回每个测点的历史等间距数据。以示例函数为例,
=OPSpan(E2:E6,"2021-12-10 15:00:00","2021-12-10 16:00:00",1800,0),每个测点将返回三条数据,总计15条。
3)历史间隔为0的情况下,默认是开始和结束历史区间,每个测点数据将包括开始时间和结束时间两条数据。
5.7. 采样值历史查询OPRaw()
5.7.1. 函数说明
OPRaw()(gns,start,end,align)
函数功能:通过输入测点名称、开始时间、结束时间和时间间隔等参数获取历史采样值
参数说明
| 参数 | 说明 |
| gns | 所查询的点名队列或单元格区域,单元格区域必须是单行或单列 |
| start | 起始时刻或单元格区域 |
| end | 结束时刻或单元格区域 |
| align | 选填,默认为0。0:竖排,1:横排 |
| 输出说明: | |
| 返回测点对应的原始值历史数据,包括历史时刻和采样值 | |
| 函数示例: | |
| =OPRaw(E2:E6,"2021-12-10 15:00:00","2021-12-10 16:00:00",0) | |
| =OPRaw({"W3.SYS.LOAD","W3.SYS.DBMEM"},"2021-12-10 15:00:00","2021-12-10 16:00:00",0) |
5.7.2. 使用示例
框选需要放入历史值采样值的区域,并输入函数OPRaw(),选择需要查询数据的测点名称区域,输入示例函数:=OPRaw(C2:C2,"2021-12-10 15:00:00","2021-12-10 16:00:00",0),按Ctrl+Shift+Enter或者Enter,采样值将返回填入时间区间内的全部结果,数据返回历史时间和历史采样值,需要两列空间。
5.8. 平均值查询OPAvg()
5.8.1. 函数说明
OPAvg()(gns,start,end,interval,align)
函数功能:通过输入测点名称、开始时间、结束时间和时间间隔等参数获取各区间历史平均值
参数说明
| 参数 | 说明 |
| gns | 所查询的点名队列或单元格区域,单元格区域必须是单行或单列 |
| start | 起始时刻或单元格区域 |
| end | 结束时刻或单元格区域 |
| interval | 等间距间隔,单位:秒 |
| align | 选填,默认为0。0:竖排,1:横排 |
| 输出说明: | |
| 返回测点对应区间的平均值数据,包括历史时刻和平均值 | |
| 函数示例: | |
| =OPAvg(H2:H2,"2021-12-10 15:00:00","2021-12-10 16:00:00",600,0) | |
| =OPAvg({"W3.SYS.LOAD","W3.SYS.DBMEM"},"2021-12-10 15:00:00","2021-12-10 16:00:00",600,0) |
5.8.2. 使用示例
框选需要放入历史平均值的区域,并输入函数OPAvg(),选择需要查询数据的测点名称区域:=OPAvg(H2:H2,"2021-12-10 15:00:00","2021-12-10 16:00:00",600,0),按Ctrl+Shift+Enter或者Enter,将返回填入时间区间内的全部结果,数据返回历史时间和平均值,需要两列空间。
5.9. 最大值查询****OPMax()
5.9.1. 函数说明
OPMax()(gns,start,end,interval,align)
函数功能:通过输入测点名称、开始时间、结束时间和时间间隔等参数获取各区间历史最大值
参数说明
| 参数 | 说明 |
| gns | 所查询的点名队列或单元格区域,单元格区域必须是单行或单列 |
| start | 起始时刻或单元格区域 |
| end | 结束时刻或单元格区域 |
| interval | 等间距间隔,单位:秒 |
| align | 选填,默认为0。0:竖排,1:横排 |
| 输出说明: | |
| 返回测点对应区间的最大值数据,包括历史最大值时刻和最大值 | |
| 函数示例: | |
| =OPMax(E2:E2,"2021-12-10 15:00:00","2021-12-10 16:00:00",600,0) | |
| =OPMax({"W3.SYS.LOAD","W3.SYS.DBMEM"},"2021-12-10 15:00:00","2021-12-10 16:00:00",600,0) |
5.9.2. 使用示例
框选需要放入历史最大值的区域,并输入函数OPMax(),选择需要查询数据的测点名称区域:=OPMax(E2:E2,"2021-12-10 15:00:00","2021-12-10 16:00:00",600,0),按Ctrl+Shift+Enter或者Enter,将返回填入时间区间内的全部结果,数据返回历史值最大时刻和最大值,需要两列空间。
5.10. 最小值查询****OPMin()
5.10.1. 函数说明
OPMin()(gns,start,end,interval,align)
函数功能:通过输入测点名称、开始时间、结束时间和时间间隔等参数获取各区间历史最小值
参数说明
| 参数 | 说明 |
| gns | 所查询的点名队列或单元格区域,单元格区域必须是单行或单列 |
| start | 起始时刻或单元格区域 |
| end | 结束时刻或单元格区域 |
| interval | 等间距间隔,单位:秒 |
| align | 选填,默认为0。0:竖排,1:横排 |
| 输出说明: | |
| 返回测点对应区间的最小值数据,包括历史最小值时刻和最小值 | |
| 函数示例: | |
| =OPMin(E2:E2,"2021-12-10 15:00:00","2021-12-10 16:00:00",600,0) | |
| =OPMax({"W3.SYS.LOAD","W3.SYS.DBMEM"},"2021-12-10 15:00:00","2021-12-10 16:00:00",600,0) |
5.10.2. 使用示例
框选需要放入历史最小值的区域,并输入函数OPMin(),选择需要查询数据的测点名称区域:=OPMin(E2:E2,"2021-12-10 15:00:00","2021-12-10 16:00:00",600,0),按Ctrl+Shift+Enter或者Enter,将返回填入时间区间内的全部结果,数据返回历史值最小时刻和最小值,需要两列空间。
5.11. 流量值查询****OPFlow()
5.11.1. 函数说明
OPFlow()(gns,start,end,interval,align)
函数功能:通过输入测点名称、开始时间、结束时间和时间间隔等参数获取各区间历史流量值
参数说明
| 参数 | 说明 |
| gns | 所查询的点名队列或单元格区域,单元格区域必须是单行或单列 |
| start | 起始时刻或单元格区域 |
| end | 结束时刻或单元格区域 |
| interval | 等间距间隔,单位:秒 |
| align | 选填,默认为0。0:竖排,1:横排 |
| 输出说明: | |
| 返回测点对应区间的流量值数据,包括历史区间和流量值 | |
| 函数示例: | |
| =OPFlow(E2:E2,"2021-12-10 15:00:00","2021-12-10 16:00:00",1800,0) | |
| =OPFlow({"W3.SYS.LOAD","W3.SYS.DBMEM"},"2021-12-10 15:00:00","2021-12-10 16:00:00",1800,0) |
5.11.2. 使用示例
框选需要放入历史流量值的区域,并输入函数OPFlow(),选择需要查询数据的测点名称区域:=OPFlow(E2:E2,"2021-12-10 15:00:00","2021-12-10 16:00:00",1800,0),按Ctrl+Shift+Enter或者Enter,将返回查询时间范围内的全部结果,数据返回包括历史区间和对应流量值。
5.12. 统计值查询****OPStat()
5.12.1. 函数说明
OPStat()(gns,start,end,interval,align)
函数功能:通过输入测点名称、开始时间、结束时间和时间间隔等参数获取各区间历史统计值
参数说明
| 参数 | 说明 |
| gns | 所查询的点名队列或单元格区域,单元格区域必须是单行或单列 |
| start | 起始时刻或单元格区域 |
| end | 结束时刻或单元格区域 |
| interval | 等间距间隔,单位:秒 |
| align | 选填,默认为0。0:竖排,1:横排 |
| 输出说明: | |
| 返回测点对应区间的统计值数据,包括历史区间和统计值,统计值排序包括:最大值时刻、最大值、最小值时刻、最小值、时间区间、平均值、流量值 | |
| 函数示例: | |
| =OPStat(E2:E2,"2021-12-10 15:00:00","2021-12-10 16:00:00",1800,0) | |
| =OPStat({"W3.SYS.LOAD","W3.SYS.DBMEM"},"2021-12-10 15:00:00","2021-12-10 16:00:00",1800,0) |
5.12.2. 使用示例
框选需要放入历史统计值的区域,并输入函数OPStat(),选择需要查询数据的测点名称区域:=OPStat(E2:E2,"2021-12-10 15:00:00","2021-12-10 16:00:00",1800,0),按Ctrl+Shift+Enter或者Enter,将返回查询时间范围内的全部结果,数据返回包括历史区间和对应统计值。
5.13. 系统时间查询****OPTime()
5.13.1. 函数说明
OPTime()
函数功能:获取数据库服务器系统时间
参数说明
| 参数 | 说明 |
| 无 | 无 |
| 输出说明: | |
| 返回数据库服务器系统时间 | |
| 函数示例: | |
| =OPTime() |
5.13.2. 使用示例
框选需要放入数据库服务器系统时间的区域,并输入函数OPTime(),将返回数据库服务器系统时间。
6. 常见问题
6.1. Excel位数与软件不匹配

6.2. WPS注册表刷新
WPS加载过程中如果遇到如下报错,代表加载项写注册表错误。请关闭WPS表格,执行软件文件夹里FlushWPSReg.exe(该程序会刷新注册表),再次启动WPS表格重复上述加载步骤即可。

6.3. NET框架未安装
软件加载程中如果遇到如下报错,代表服务器未安装.net框架,请执行Tools中MicrosoftNETFrameworkV452.exe,完成软件所需框架安装。安装后重启软件即可正常。
6.4. 数据库配置错误
当数据库连接中断时,软件会返回数据库配置信息错误,点击数据库连接重新配置正确数据库信息即可。
6.5. 数据获取失败
数据库连接成功后,测点在指定时间段无数据时,数据返回结果为空,则展示为null。
6.6. 时间格式不严谨
时间请输入标准格式YYYY-MM-DD hh:mm:ss。当时间格式不匹配时,会出现校验异常。
帮助中心