以下 PowerShell 片段将通过OleDbConnection.GetOleDbSchemaTable()列出 Excel 电子表格中的所有工作表和命名范围:
$file = "C:\Users\zippy\Documents\Foo.xlsx";
$cnStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=`"$($file)`";Extended Properties=`"Excel 12.0 Xml;HDR=YES`";";
$cn = New-Object System.Data.OleDb.OleDbConnection $cnStr;
$cn.Open();
# to list the sheets
$worksheets = $cn.GetOleDbSchemaTable([System.Data.OleDb.OleDbSchemaGuid]::Tables,$null);
$cn.Close();
$cn.Dispose();
$worksheets | Format-List;
但是,这不会列出表(在 Excel 2003 中称为列表)或引用列表的命名范围。
如果我传递类型为过程或视图的OleDbSchemaGuid ,我会收到带有消息的MethodInvocationExceptionOperation is not supported for this type of object.
这是否可以通过使用连接字符串或限制参数进行调整来列出表格?