OLEDB连接对象介绍(一)
在WPS Office中,可以通过OLEDB接口实现与外部数据源的交互,该功能在工作簿上通过OLEDBConnection对象实现,而在工作表中可以使用QueryTable对象。该对象主要用于建立与数据服务器的连接,需要指定目标服务器地址以及待访问的数据对象名称。此外,OLEDBConnection 对象还支持可选配置项,包括:
- 身份验证凭据信息(如用户名/密码等认证参数)
- 可执行命令(例如针对SQL Server数据库的SELECT查询语句等需要服务器处理的指令)
- 其他参数(如:是否禁用多活动结果集等等)
一、OLEDB连接字符串
let connstr = `OLEDB;Provider=MSOLEDBSQL.1;Password=123456789;
Persist Security Info=True;User ID=sa;Initial Catalog=test;
Data Source=127.0.0.1;Use Procedure for Prepare=1;
Auto Translate=True;Packet Size=4096;Workstation ID=DESKTOP-******;
Use Encryption for Data=False;Tag with column collation when possible=False;
MARS Connection=False;DataTypeCompatibility=0;Trust Server Certificate=False;
Application Intent=READWRITE;MultiSubnetFailover=False;
Use FMTONLY=False;TransparentNetworkIPResolution=True;
Connect Retry Count=1;Connect Retry Interval=10`;1.1、连接字符串参数介绍
| 参数 | 说明 |
|---|---|
| OLEDB | 连接方式 |
| Provider=MSOLEDBSQL.1; | OLE DB 驱动提供程序版本 |
| Password=************; | 数据库密码 |
| User ID=**; | 数据库用户名 |
| Initial Catalog=test; | 连接默认数据库 |
| Data Source=***.***.**.*; | 数据库服务器地址(IP或主机名) |
| Persist Security Info=True; | 连接成功后保留密码信息 |
| Use Encryption for Data=False; | 不加密数据传输 |
| Trust Server Certificate=False; | 不信任服务器证书(需要有效证书) |
| Packet Size=4096; | 网络包大小(字节) |
| Connect Retry Count=1; | 连接重试次数 |
| Connect Retry Interval=10; | 重试间隔(秒) |
| TransparentNetworkIPResolution=True; | 启用透明网络IP解析 |
| Use Procedure for Prepare=1; | 使用存储过程准备语句 |
| Auto Translate=True; | 自动转换字符集 |
| Workstation ID=DESKTOP-*******; | 客户端计算机名称 |
| MARS Connection=False; | 禁用多活动结果集 |
| DataTypeCompatibility=0; | 数据类型兼容模式(0=最新) |
| Application Intent=READWRITE; | 应用程序意图(读写模式) |
| MultiSubnetFailover=False; | 禁用多子网故障转移 |
| Use FMTONLY=False; | 不使用FMTONLY元数据查询 |
| Tag with column collation when possible=False; | 列排序规则标记 |
在 WPS Office 中,可以通过 OLEDB 接口 实现与外部数据源的交互,该功能由 OLEDBConnection 对象 管理。该对象的核心作用是建立与数据服务器的连接,主要涉及以下三类参数:
核心参数(红色标注)
- 服务器地址(需连接的目标数据库服务器名称)
- 数据对象名称(要在该服务器上访问的具体对象,如表、视图等)
安全相关参数(绿色标注)
- 身份验证凭据(如用户名/密码等认证信息)
- 推荐安全方案:若环境允许,建议启用 Windows 身份验证(集成安全认证),避免明文存储密码,提升安全性。
其他参数(黑色标注)
- 可执行命令(如针对 SQL Server 的 SELECT 查询语句,或其他需服务器处理的指令)
通过合理配置这些参数,用户既能建立基础数据连接,也能根据安全需求选择更可靠的认证方式。如 Windows 身份验证:
let secureConnStr = `OLEDB;Provider=MSOLEDBSQL.1;
Integrated Security=SSPI; // 使用 Windows 身份验证
Initial Catalog=test;
Data Source=127.0.0.1;
Encrypt=Yes; // 启用加密
Trust Server Certificate=Yes;
Connection Timeout=30;`;1.2、连接字符串的获取
在 WPS Office 中,用户可通过软件提供的 可视化数据库连接界面 手动获取连接字符串,具体操作步骤如下图所示:
第一步:点击菜单栏中的数据

第二步:点击获取数据,选择导入数据,打开选择数据源对话框

第三步:选择其他高级,打开连接属性

我们看到,有支持连接Oracle数据库的、连接Sql Server数据库;还有结合ODBC驱动连接任意数据库的方式等等,这里以Sql Server为例。
第四步:点击 Microsoft OLE DB Provider for Sql Server

基础参数设置
输入目标数据库的 服务器IP地址
根据认证方式选择填写:
▶ 若使用 标准身份验证,需补充输入 用户名 和 密码
▶ 若使用 Windows 验证(或 Windows NT 集成安全设置),无需填写用户名/密码(系统自动调用当前登录Windows账户的权限)
目标数据库选择
从下拉列表或输入框中指定需要连接的 具体数据库名称
连接测试
点击 [测试连接] 按钮,若弹窗提示 “连接成功” 字样,则表明当前配置的参数有效,与目标数据库的连接没有出错
点击确定使得测试链接窗口关闭,再点击数据连接属性窗口的确定
第五步:复制连接字符串,粘贴到JS宏代码中

完成上述配置并成功建立数据库连接后,系统将自动生成对应的 连接字符串(通常可在【选择数据源】界面的「手工输入连接语句」面板中直接查看/复制)。您可直接将该字符串应用于 WPS JavaScript 宏代码 中,用于后续的数据库交互操作(如数据查询、写入等)。
二、OLEDB连接字符串的基本使用
2.1、工作簿上的连接
function contest() {let connstr = "你复制过来的连接字符串";let connectionName = "myDatabase80"; // 连接名称let description = "实例数据库"; // 对连接的简要描述console.clear();let query = "select distinct sj 市级 from uf_scrl where tbsj='2025-11-01'";let q = "create view vw_city as select distinct sj 市级 from uf_scrl where tbsj='2025-11-01'";let conection = ThisWorkbook.Connections.Add2(connectionName, description, connstr, query, xlCmdSql);let conn = conection.OLEDBConnection; conn.SaveAsODC("E:\\vscode\\wpsjs\\jsa_database\\myConnection.odc",);conn.Refresh(true);// 捕获数据库异常let errors = Application.OLEDBErrors;console.log("异常数:" + errors.Count);for (let i = 1; i <= errors.Count; i++) {console.log(`The following error occurred:${errors.Item(i).ErrorString} : ${errors.Item(i).SqlState}`);}console.log(conn.OLAP);console.log(conn.CommandText);console.log(conn.Connection);conn.MaintainConnection = false; //关闭连接conn.Delete(); // 删除连接
}2.2、工作表上的连接
// 工作表上的连接
function conntest_sht() {let connstr = "你复制的连接字符串";let qyTb = Worksheets.Item(1).QueryTables.Add(connstr, Range("A1"), undefined);qyTb.Name = "sheet_database_con";qyTb.CommandType = xlCmdSql;qyTb.CommandText = "select distinct sj 市级 from uf_scrl where tbsj='2025-11-01';";qyTb.Refresh(true); // 将查询结果返回到工作表中,如果是Create等语句不用写这一行// 捕获数据库异常let errors = Application.OLEDBErrors;console.log("异常数:" + errors.Count);for (let i = 1; i <= errors.Count; i++) {console.log(`The following error occurred:${errors.Item(i).ErrorString} : ${errors.Item(i).SqlState}`);}qyTb.Delete(); // 删除连接
}执行效果图如下

