在Excel工作簿中embeddedSQL Server查询

我知道如何使用代码将访问查询导入Excel工作簿,但是如何将SQL Server查询embedded到Excel工作表中。 手动这样做的步骤是单击数据选项卡,从其他来源,从SQL Server并input服务器名称,然后select您的表,然后单击完成。 然后单击属性,定义选项卡,命令types是SQL,命令文本是要运行的SQL语法。 那好吧,好吧。 我无法弄清楚如何在C#中复制这个过程,有人可以帮助我吗?!

编辑 – 对不起,我应该已经发布了我正在处理的代码…但是在这里它是任何人。 引发一个我从未见过的特殊信息

QueryTables oTables; QueryTable oTable; Range oRng; Sheets oSheets; Excel._Workbook oWB; Excel._Worksheet oWS; Excel.Application oXL try { oSheets = oWB.Sheets; oWS = (Excel._Worksheet)(oWB.ActiveSheet); oRng = Global.Variables.GlobalVariables.oWS.get_Range("A1"); oTables = oWS.QueryTables; object aStrSQL = "SELECT * FROM dbo.tableproductInfo; object connection = "Data Source=ServerName;Initial Catalog=DatabaseName;Integrated Security=True;MultipleActiveResultSets=True";; oTable = oTables.Add(connection, oRng, aStrSQL); oTable.RefreshStyle = XlCellInsertionMode.xlInsertEntireRows; oTable.Refresh(true); oXL.UserControl = true; } catch (Exception e) { MessageBox.Show(e.ToString()); } 

编辑—代码到达时发生的问题

 oTable = oTables.Add(connection, oRng, aStrSQL); 

显示的消息是:System.Runtime.InteropServices.COMException(0x800A03EC)exception从HRESULT:0x800A03EC在Microsoft.Office.Interop System.RuntimeType.ForwardCallToInvokeMember(stringmemberName,BindingFlags标志,对象目标,Int32 [] aWrapperTypes,messageData&msgData)。 Excel.QueryTables.Add(对象连接,范围,目标,对象Sql)

编辑—为OLEDB添加提供程序产生这个 在这里输入图像说明