2013-09-27 106 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.在我的腳本中,它看起來像它來自寫輸出!