2010-11-24 11 views
5

Mit Powershell-Codierung ist es einfach genug, um zu schaffen, sagen wir, eine Instanz der Klasse Excel-Anwendung und starten Sie es zu manipulieren:den Wert für MS Office Interop Konstanten oben schauen, anstatt hart sie

$app = New-Object -ComObject "Excel.Application" 

jedoch wenn ich die Konstanten wie xlDoubleQuote oder xlDelimited verwenden muss - es scheint, als ob ich gezwungen bin, sie hart zu codieren. Ich würde wirklich in der Lage sein mag, wie etwas zu tun ist:

$constants = New-Object -ComObject "Excel.Constants" 
$constants.xlDoubleQuote 

Und sehen, dass es den Wert 1 Leider zurückkehren würde ich kann nicht eine Instanz einer Aufzählung erstellen, und es scheint nicht zu sein ein Weg, um es wie eine normale .NET-Klassenbibliothek zu verweisen:

[Excel.Constants]::xlDoubleQuote 

gibt es irgendeine Art und Weise dynamisch, dass die Aufzählung in Powershell zu importieren? Vielleicht durch die verwalteten Bibliotheken und nicht durch COM?

Antwort

4

Keith gab Ihnen bereits die Antwort, hier ist eine andere Option. Sie können Tabulatorvervollständigung auf den $ xlConstants-Objekt verwenden, um die Konstanten zu erhalten:

$xl = New-Object -ComObject Excel.Application 
$constants = $xl.gettype().assembly.getexportedtypes() | where-object {$_.IsEnum -and $_.name -eq 'constants'} 

$pso = new-object psobject 
[enum]::getNames($constants) | foreach { $pso | Add-Member -MemberType NoteProperty $_ ($constants::$_) } 
$xlConstants = $pso 
8

Verwenden Sie die primäre Interop-Assembly für Excel. Wenn Sie Office installiert haben, sollten diese im GAC sein. Verwenden Sie wie folgt:

Add-Type -AssemblyName Microsoft.Office.Interop.Excel 
[int][Microsoft.Office.Interop.Excel.Constants]::xlDoubleQuote 
+1

Oder: [Microsoft.Office.Interop.Excel.Constants] :: xlDoubleQuote.Value__ –

1

Keith und Shay perfekte Antworten gab jedoch beachten, dies:

Wenn Excel 2003 oder Excel 2007 mit der Office Primary Interop Assemblies (PIAs) sollten auf der Maschine installiert werden. Es sind verteilbare Versionen von Microsoft verfügbar. Sehen Sie diese stackoverflow.com Posting hier für weitere Informationen:

Different Interop references on two different computers doesn't work

Verwandte Themen