簡體   English   中英

Excel讀取Powershell陣列

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM