2

次の 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 ではリストと呼ばれます) や、リストを参照する名前付き範囲はリストしません。

タイプが Procedures または ViewsのOleDbSchemaGuidを渡すと、次のメッセージとともにMethodInvocationExceptionが返されます。Operation is not supported for this type of object.

接続文字列または制限パラメータを調整してテーブルを一覧表示することは可能ですか?

4

1 に答える 1

0

この簡単なソースを試してください:

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

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

            //TODO:
        }
于 2013-12-23T09:08:32.300 に答える