1

作为我正在开发的 Excel 帮助实用程序的一部分,我正在将大型常用 Excel 电子表格移动到 MS SQL 以提高性能以及通过 SSIS 包进一步验证数据。

作为其中的一部分,我编写了一个基本的数据库连接类,它模仿数据 --> 从其他来源 --> 从 SQL Server 按钮。我使用 Office 2013 的副本在家中进行了这项工作,并且我预计会出现一些转换问题,主要是 Excel 互操作 API 已更改并且无法选择升级到 Office 2010 或更高版本。我的主要问题似乎是新命令 AddEx 的转换:

MyListObjects.AddEx(ExcelAPI.XlListObjectSourceType.xlSrcQuery, MyConnection, Type.Missing, ExcelAPI.XlYesNoGuess.xlYes,StartRange);

到 2003/2007 版本按照 MSDN 添加(https://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.listobjects.add(v=office.11 ​​).aspx )

//2007 命令//

  ExcelAPI.ListObject CurrentTable = MyListObjects.Add(ExcelAPI.XlListObjectSourceType.xlSrcExternal, MyConnection,Type.Missing,ExcelAPI.XlYesNoGuess.xlYes,StartRange);

我得到的例外是:

An exception of type 'System.ArgumentException' occurred in mscorlib.dll but was not handled in user code Additional information: The parameter is incorrect. (Exception from HRESULT: 0x80070057 (E_INVALIDARG))

我最初的想法是更改 ExcelAPI.XlYesNoGuess 枚举,所以我尝试手动设置值,但随后遇到编译器错误。我尝试一次删除一个参数Type.Missing来跟踪罪魁祸首,但这似乎导致的错误多于解决的错误,尽管 MSDN 声明这些都是可选的。

连接字符串组成如下:

String FullString = "OLEDB;Provider=SQLOLEDB.1;Data Source= " + PCNameOrIP + @"\" + InstanceName + @";Initial Catalog=" + DatabaseName + @";User ID=" + DatabaseUserName + @";Password=" + DatabasePassword; 

方法测试调用参数:

Globals.ThisAddIn.DM.EstablishConnection("BREWL14H58107", "SQLEXPRESS", "TestDB", "sa", "Password0", "SELECT * FROM TestDB.dbo.Test", "Demo File", "Testing");

完成后对此进行了更多研究。看来我的代码在家工作得很好,修改后的添加。但是从工作中我仍然得到:

An exception of type 'System.ArgumentException' occurred in mscorlib.dll but was not handled in user code. Additional information: The parameter is incorrect. (Exception from HRESULT: 0x80070057 (E_INVALIDARG))
4

0 回答 0