2010-11-24 10 views
5

使用PowerShell的價值,它是很容易建立,也就是說,Excel應用程序類的一個實例,並開始操縱它:仰望的MS Office的互操作常量,而不是硬編碼他們

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

然而,如果我需要使用像xlDoubleQuote或xlDelimited這樣的常量 - 好像我被迫對它們進行硬編碼。我真的很希望能夠像做:

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

,並認爲它會返回值1。不幸的是我不能創建一個枚舉的實例,似乎沒有要引用它像你這樣的方式是正常的.NET類庫:

[Excel.Constants]::xlDoubleQuote 

是否有某種方式來動態地導入到枚舉PowerShell的?也許通過託管庫而不是COM?

回答

4

基思已經給了你答案,這裏是另一種選擇。您可以在$ xlConstants使用製表符完成對象來獲得常數:

$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

使用Excel的主互操作程序集。如果您安裝了Office,則應該在GAC中。使用像這樣:

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

或者:[Microsoft.Office.Interop.Excel.Constants] :: xlDoubleQuote.Value__ – 2010-11-25 14:30:33

相關問題