0

Excel 2010 OleDb ドライバーと OleDbConnection を使用すると、次のようにスプレッドシート内のワークシートと名前付き範囲をクエリおよび操作できます。

$cn = New-Object System.Data.OleDb.OleDbConnection $cnStr;
$cmd = $cn.CreateCommand()

$cmd.CommandText = "INSERT INTO [Some Named Range] (" + 
@"
    [Name], [Description], 
    [Type], [Val], 
) VALUES(
    'Justin', 'A Programmer', 
    'Senor Developer', 11
)"@
$cmd.ExecuteNonQuery();

$cmd.CommandText = "SELECT * FROM [Some WorkSheet$]"
$rdr = $cmd.ExecuteReader();
[PSObject[]] $data = [PSObject[]]@();
while ($rdr.Read()) {
    $row = @{}; 0..($rdr.FieldCount-1) | %{$row[$rdr.GetName($_)] = $rdr[$_]; }
    $data += New-Object PSObject -Property $row;
}

しかし、Excel 2003 でリストと呼ばれていたテーブルの命名規則は何ですか?

4

2 に答える 2

0

リストオブジェクト/テーブルのアドレスを使用する必要があります:

Dim Table as Excel.ListObject
dim TableAddress as String

Set Table = Worksheets("Some Worksheet").ListObjects("SomeTable")
TableAddress = Table.Range.Address(RowAbsolute:=False,ColumnAbsolute:=False)
...
$cmd.CommandText = "SELECT * FROM [Some WorkSheet$" TableAddress & "]"
于 2012-05-05T18:31:39.907 に答える
0

OleDB または ODBC ドライバーでこれを行うことはできません。

于 2012-12-30T03:17:53.803 に答える