2013-09-27 58 views
0

亲爱的Stackoverflow(ERS),Excel阅读Powershell阵列

我有一个PowerShell和Excel的小问题。我有一个excel文件,其中有几行和文本。我想阅读每一列,并将内容放入数组中。我的脚本可以工作,但是当我显示数组的内容时,总是有一个0。我的Excel文件或脚本有问题吗?

$a = New-Object -comobject Excel.Application 
    $a.Visible = $true 
    $a.DisplayAlerts = $False 

    $Workbook = $a.workbooks.open("C:\test.xls") 
    $Sheet = $Workbook.Worksheets.Item("Auto") 

     $row   = [int]2 
     $KN    = @() # beginnt bei 2,1... 3,1... 4,1 
     Do {$KN  += $Sheet.Cells.Item($row,1).Text ; $row = $row + [int]1} until (!$Sheet.Cells.Item($row,1).Text) 

    $Workbook.Close() 
    $a.Quit() 
    [System.Runtime.Interopservices.Marshal]::ReleaseComObject($a) 

    Write-Output $KN 

输出:

0 
7 
7 
7 
7 
7 

Excel文件看起来像这样:

A B C D 
7 
7 
7 
7 
7 
7 

我想这是一些简单的错误与我的阵列,但我无法找到它! 谢谢!

EDIT1: 的问题在规定的:

$KN = @() 

因为如果我停下来填充我的Exceldata的阵列,它继续给我看0

EDIT2: 好它变得越来越怪异。如果我输入$ KN,在脚本之后再次查看内容,它会显示没有0的正确内容。 它来自哪里,它为什么在那里? 为什么不见了,当我手动查看数组?

回答

1

找到了!最后!从来没有想过这个,对于这个帖子感到抱歉!

[System.Runtime.Interopservices.Marshal]::ReleaseComObject($a) 

写了0.在我的脚本中,它看起来像它来自写输出!