Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 尝试通过互操作将外部数据添加到Excel文件时出现异常_Vb.net_Excel_Exception_Interop - Fatal编程技术网

Vb.net 尝试通过互操作将外部数据添加到Excel文件时出现异常

Vb.net 尝试通过互操作将外部数据添加到Excel文件时出现异常,vb.net,excel,exception,interop,Vb.net,Excel,Exception,Interop,我试图通过自动化模拟Excel的“数据/来自其他来源/来自SQL Server”功能的行为。即:生成空白电子表格,启动SQL Server导入向导,保存生成的电子表格,然后退出 我记录了我导入数据的宏。生成的宏似乎相当简单[解释]: 使用ActiveSheet.ListObjects.Add(SourceType:=blah, 源:=数组(blah), 目的地:=blah).查询表 [设置一组属性] 以 我写了一个框架程序,能够成功地启动Excel,将“测试”写入A1,保存文件,然后退出Exc

我试图通过自动化模拟Excel的“数据/来自其他来源/来自SQL Server”功能的行为。即:生成空白电子表格,启动SQL Server导入向导,保存生成的电子表格,然后退出

我记录了我导入数据的宏。生成的宏似乎相当简单[解释]:

使用ActiveSheet.ListObjects.Add(SourceType:=blah, 源:=数组(blah), 目的地:=blah).查询表 [设置一组属性] 以 我写了一个框架程序,能够成功地启动Excel,将“测试”写入A1,保存文件,然后退出Excel,所以我知道我很乐意去那里

当我将ActiveSheet.ListObjects.add()调用添加到我的程序中时,它始终会弹出一个ArgumentException。为了比较,我添加了一个ListObjects.Add调用,该调用生成一个本地表,而不是外部表,并且可以正常工作

将lo设置为Microsoft.Office.Interop.Excel.ListObject
“这很管用
lo=ws.ListObjects.Add(源类型:=Microsoft.Office.Interop.Excel.XlListObjectSourceType.xlSrcRange,源:=ws.Range($A$1),目标:=ws.Range($D$1))
“这几乎完全相同的代码不存在
lo=ws.ListObjects.Add(源类型:=Microsoft.Office.Interop.Excel.XlListObjectSourceType.xlSrcExternal,源:=arrConnectionString,目标:=ws.Range($D$1))
arrConnectionString是从宏逐字复制的三元素字符串数组。它只是一个普通的长连接字符串,被切成三段:

{“OLEDB;Provider=SQLOLEDB.1;集成安全性=SSPI;持久安全性信息=True;数据源=BLAHBLAH\SQLEXPRESS;用于Prepa的使用过程”_
“re=1;Auto Translate=True;数据包大小=4096;工作站ID=BLAHBLAH;对数据使用加密=False;标记时使用列排序规则”_
“可能=错误;初始目录=虚拟”}
确切的错误是:参数不正确。(HRESULT的例外:0x80070057(E_INVALIDARG))。有什么想法吗


最初我考虑使用EPPlus,但它在内存中构建了整个电子表格。由于需要导出的数据的大小(120K行x 300列),它总是会耗尽内存。

根据Ben Black的建议:将源参数从字符串数组更改为字符串使其工作


似乎是处的文档中的一个缺陷,该文档声称当SourceType为xlSrcExternal时,源应该是字符串数组。

如果使用普通字符串而不是字符串数组,会发生什么情况?考虑到VBA版本确实使用了数组,这是非常奇怪的。