[英]Excel Reading to Powershell Array
親愛的Stackoverflow(ers),
我在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。它來自何處,為什么存在? 當我手動查看陣列時,為什么它消失了?
找到了! 最后! 沒想過,對這個帖子感到抱歉!
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($a)
寫了0。在我的腳本中,它看起來像是來自寫輸出的!
如果ReleaseComObject($ a)成功執行,它將像大多數其他函數一樣寫出“ 0”,因此,只需將System.Runtime.Interopservices.Marshal :: ReleaseComObject($ a)這樣的語句添加管道和Out-Null即可進行修復。 | 空空
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.