Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.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
C# Can";“动态命名范围”;在excel中是否使用OLEDB连接进行访问?_C#_Excel_Vba_Oledb_Ole - Fatal编程技术网

C# Can";“动态命名范围”;在excel中是否使用OLEDB连接进行访问?

C# Can";“动态命名范围”;在excel中是否使用OLEDB连接进行访问?,c#,excel,vba,oledb,ole,C#,Excel,Vba,Oledb,Ole,我尝试使用以下公式访问一个经常用于此目的的 =offset(...,0,0,counta(...),...) 动态命名范围“在Microsoft Excel中,您可能有一个必须扩展以包含新信息的命名范围 描述创建动态定义名称的方法。“ 但是,OleDbConnection无法识别此对象,并引发“Microsoft Access数据库引擎找不到对象‘Arg4a’的一般错误。请确保该对象存在,并且正确拼写其名称和路径名。” 在这里和那里,我读到动态命名范围不能用于此方法,但是我希望对此进行确认,然

我尝试使用以下公式访问一个经常用于此目的的

=offset(...,0,0,counta(...),...)
动态命名范围“在Microsoft Excel中,您可能有一个必须扩展以包含新信息的命名范围 描述创建动态定义名称的方法。“

但是,
OleDbConnection
无法识别此对象,并引发“Microsoft Access数据库引擎找不到对象‘Arg4a’的一般错误。请确保该对象存在,并且正确拼写其名称和路径名。”

在这里和那里,我读到
动态命名范围
不能用于此方法,但是我希望对此进行确认,然后我可以继续思考其他方法

如下所示,Excel没有列出动态版本的
值。我可以轻松访问任何范围(工作簿或特定工作表)中的
\u Arg3
,但Arg4不好

对于全局命名范围,我使用如下简单选择:

var select = "SELECT * FROM _Arg4";
var cmd = new OleDbCommand(select, conn);
以及以下连接字符串

strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + FileName + ";Extended Properties=\"Excel 12.0;HDR=" + HDR + ";IMEX=1\""
  • 我也在这里标记了
    vba
    ,因为这种情况也可以用这种语言来实现,我使用了大量与
    vba
    相关的源代码来了解总体思路
  • 我正在使用的方法的全部内容在下面的XLS import下:

有没有这样的运气:
“SELECT*FROM”+xlApp.xlWorkbook.xlWorksheet.Range(“Arg4”).Address?事实上,当我研究这个时,我看到了类似的代码,比如
wks.Range(…).Address(0,0)之前没有相关代码,因此我无法找到工作类型。因为我找不到任何具有
范围
属性的内容(如图纸、表格等)。但是根据你提到的,这不是完全违背了我使用OleDb的事实吗?我认为要使用它,我需要引用一种传统的方法来创建一个
新应用程序()
,然后从那里开始,这会减慢一切。(至少我应该说,用这种方法读取数据的速度非常慢)。啊,是的,您需要实例化一个
Excel.Application
对象,才能访问工作簿、工作表和范围对象。是的:这可能不利于使用OLEDB。我甚至没想到。。。所以问题是,如果没有
Excel.Application
,那些命名范围可能没有任何意义……好吧,使用OleDb连接,我可以读取受命名范围限制的数据,而不是整个工作表,这些命名范围显示在
连接返回的列表中。GetOleDbSchemaTable()
。但是,一旦您将公式添加到
命名范围
以创建
动态命名范围
,poof!,它不再出现在名单上了。嗯,我被难住了。我所能找到的所有建议都像您所说的那样:它无法完成--除非您打开工作簿对象,例如: