在Excel工作簿中嵌入SQL Server查询

时间:2014-08-15 01:35:03

标签: c# excel

我知道如何使用代码将访问查询导入Excel工作簿,但是如何将SQL Server查询嵌入到Excel工作表中。手动执行此操作的步骤是单击“数据”选项卡,“从其他来源”,“从SQL Server”并输入服务器名称,然后选择表格,然后单击“完成”。然后单击属性,定义选项卡,命令类型为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)来自HRESULT的异常:0x800A03EC,位于Microsoft.Office.Interop.Excel.QueryTables的System.RuntimeType.ForwardCallToInvokeMember(字符串memberName,BindingFlags标志,Object target,Int32 [] aWrapperTypes,messageData& msgData) .Add(对象连接,范围,目标,对象Sql)

编辑--- 为OLEDB添加提供程序会生成此enter image description here

0 个答案:

没有答案