JS宏连接数据库:使用Connections创建的对象
在上一章节中,我们学习了工作簿中的连接对象集合——Connections对象。通过该对象提供的Add方法或Add2方法,可以为当前工作簿创建数据连接。需要注意的是,最终生成的连接对象类型(如OLEDBConnection或ODBCConnection)取决于所使用的连接字符串类型:若连接字符串基于OLEDB协议,则生成OLEDBConnection对象;若基于ODBC协议,则生成ODBCConnection对象。
一、OLEDBConnection对象
OLEDBConnection是使用Connections结合OLEDB连接字符串创建产生的连接对象。例如:
function contest() {let connstr = "OLEDB;Provider=MSOLEDBSQL.1;Password=******;Persist Security Info=True;User ID=**;Initial Catalog=****;Data Source=*****;Use Encryption for Data=False;";let connectionName = "myDatabase80"; // 连接名称let description = "实例数据库"; // 对连接的简要描述console.clear();let query = "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);conn.MaintainConnection = false; //关闭连接
}
显然上述就是一个通过OLEDB连接创建出来的OLEDBConnection。这里只是创建了这么一个对象,我们怎么通过js宏加载到工作表中去呢?也就是实现下面的操作:

二、将工作簿上的连接加载到工作表上
不管是OLEDBConnection还是ODBCConnection,他们都是Connections集合中的元素,因此加载方式也是相同的。
2.1、使用QueryTables进行加载
可以使用QueryTables.Add方法进行加载
function lodeConnections() {// 第一步使用Item方法获取工作簿上的连接,通过连接名称获取let connection = ThisWorkbook.Connections.Item("myDatabase80");// 第二步,调用QueryTables的Add方法let QueryTable = ThisWorkbook.Worksheets.Item("Sheet1").QueryTables.Add(connection, ThisWorkbook.Worksheets.Item("Sheet1").Range("A1"));QueryTable.Refresh(true);
}
注意,这里的第一个参数不再是我们在前面说的一个连接字符串,而是工作簿连接对象集合Connection中的某一个元素,第二个参数是加载位置,可以根据需求,加载到任意工作表,不过要保证与ThisWorkbook.Worksheets.Item("Sheet1").QueryTables对象在同一个工作表。执行效果如下图所示:

2.2、直接加载到数据透视表之中
function lodeToPivot() {// 第一步使用Item方法获取工作簿上的连接,通过连接名称获取let connection = ThisWorkbook.Connections.Item("myDatabase80");// 第二步,创建数据透视表let pvtCache = ThisWorkbook.PivotCaches().Create(xlExternal, connection, xlPivotTableVersion15);// 第三步加载数据pvtCache.CreatePivotTable(Range("B1"), "myPivotTable")
}
执行效果如下:

| 名称 | 值 | 说明 |
|---|---|---|
| xlConsolidation | 3 | 多重合并计算数据区域。 |
| xlDatabase | 1 | ET 列表或数据库。 |
| xlExternal | 2 | 其他应用程序中的数据。 |
| xlPivotTable | -4148 | 与另一数据透视表相同来源。 |
| xlScenario | 4 | 数据基于使用方案管理器创建的方案。 |
上表是官方文档中,对于创建数据透视表时的枚举常量介绍,显然可以使用xlExternal来表示你数据透视表的数据源来自外部数据(可以是web,数据库等等,正好符合Connections集合中的元素介绍)。
注意:直接加载到数据透视表,不会在工作簿中创建新的连接对象,而加载到工作表中会创建新对象如下图所示:

三、小结
当前章节未对 OLEDBConnection 和 ODBCConnection 的具体属性与方法展开详细说明。事实上,我们在先前学习 QueryTable 相关内容时,已覆盖了二者多数共通的属性与方法。考虑到这部分内容存在较高重合度,为避免重复讲解,本章不再赘述。大家只需重点掌握如何将工作簿中的连接加载至工作表即可。
如果不太清楚可以去查阅相关官方文档。
