使用OleDbConnection::GetOleDbSchemaTable()列出excel表格

使用OleDbConnection::GetOleDbSchemaTable()列出excel表格,excel,ado.net,oledb,Excel,Ado.net,Oledb,以下PowerShell代码段将通过以下方式列出excel电子表格中的所有工作表和命名范围: 但是,这不会列出表(在Excel 2003中称为列表),也不会列出引用列表的命名范围 如果我传递了一个过程或视图类型,我会得到一个消息,消息是此类型的对象不支持操作。 是否可以通过调整连接字符串或限制参数来列出表?尝试以下简单来源: using (var connection = (OleDbConnection)GetConnection()) { conn

以下PowerShell代码段将通过以下方式列出excel电子表格中的所有工作表和命名范围:

但是,这不会列出表(在Excel 2003中称为列表),也不会列出引用列表的命名范围

如果我传递了一个过程或视图类型,我会得到一个消息,消息是此类型的对象不支持操作。


是否可以通过调整连接字符串或限制参数来列出表?

尝试以下简单来源:

  using (var connection = (OleDbConnection)GetConnection())
        {
            connection.Open();

            var dt = connection.GetSchema("TABLES");
            var list=dt.Select().Where(w => w["TABLE_NAME"].ToString()).ToList();

            //TODO:
        }

请尝试以下简单来源:

  using (var connection = (OleDbConnection)GetConnection())
        {
            connection.Open();

            var dt = connection.GetSchema("TABLES");
            var list=dt.Select().Where(w => w["TABLE_NAME"].ToString()).ToList();

            //TODO:
        }

我在一个C#WinForms应用程序中遇到了类似的问题。我知道这是不同的代码,但这可能会有所帮助。调用GetOleDbSchemaTable并查看这些表时,您会注意到,您得到的不仅仅是工作表——它还返回内部使用的表,如筛选表等。在尝试使用Excel内部表时,我看到了“此类型对象不支持操作”消息。看到这个帖子。。。我在一个C#WinForms应用程序中遇到了类似的问题。我知道这是不同的代码,但这可能会有所帮助。调用GetOleDbSchemaTable并查看这些表时,您会注意到,您得到的不仅仅是工作表——它还返回内部使用的表,如筛选表等。在尝试使用Excel内部表时,我看到了“此类型对象不支持操作”消息。看到这个帖子。。。