我猜你想插入的所有用戶對象,並假設你只能做一次的行,因爲那會比一次一個小區好。讓我們一次完成整個陣列,你說什麼?你不會給我們一些需要的信息,所以我會彌補我沒有的信息。很明顯,你想使用$SPREADSHEET_WORKSHEET_2
表示的工作表,這很好,我們可以用這個工作表。由於您發佈的代碼應該將屬性的名稱作爲標題行輸入,因此我認爲您確實需要標題行,這很好,因爲我們將默認粘貼一個(跳過這會變得更復雜一點,但我離題了)。我將使用$arrUsers
作爲數組變量名稱,因爲您沒有指定一個(我假設$obj
是數組中的一個對象)。所以,讓我們這樣做...
我們將在單元格A1上粘貼具有標題行的對象數組。當粘貼到Excel時,您希望事物被製表符分隔,我們可以輕鬆地使用ConvertTo-CSV -delimeter "
t「and we will also use the
-NoTypeInformation」切換該相同的cmdlet,以便它不會將對象類型信息作爲第一行插入, (如果你的PowerShell不喜歡管道到剪輯,你可以管道到c:\ windows \ system32 \ clip.exe,而不是基本上插入到你的剪貼板的東西,這是真棒目的)。
#Convert array of object to a CSV that is tab delimited and without object type information, and copy it to the clipboard
$arrUsers | ConvertTo-CSV -Delimeter "`t" -NoType | Clip
#Select the first cell of the desired sheet and activate it's PasteSpecial method with no arguments (typing it as `[void]` so we don't get "True" spam because it was successful)
[void]$SPREADSHEET_WORKSHEET_2.cells.Item(1).PasteSpecial()
完成。不,真的,就是這樣。這將與頭到您的工作簿的希望的紙頁整個陣列粘貼在單元格A1。
好了,日在實際上並沒有直接回答你的問題,但我認爲這是你想要的。要直接回答你的問題,我會告訴你如何一次填充整行的價值。基本上它是一樣的,但我們只從數組中選擇一個對象,並且在我們管道剪輯之前添加|select -skip 1
,以便它跳過標題行。
$arrUsers[20] | ConvertTo-CSV -NoType -Del "`t" | Select -Skip 1 | Clip
[void]$SPREADSHEET_WORKSHEET_2.cells.Item(1).PasteSpecial()
將第21位用戶的記錄粘貼到A1中。你不想要A1?那麼,這是可管理的,假設你想要A22(第21位用戶,加上標題行,這在我的腦海中是有道理的)。我們可以這樣做:
[void]$SPREADSHEET_WORKSHEET_2.columns.Item(1).cells.item(22).PasteSpecial()
這是第一行,也是第22行。或者你可以像以前一樣使用Range方法:
[void]$SPREADSHEET_WORKSHEET_2.Range("A22").cells.Item(1).PasteSpecial()
同樣的事情。在我走之前,只是最後的評論...
我們經常使用.cells.item(1)
,因爲Cell對象是我們想要使用的PasteSpecial方法。沒有參數,它就像通用的粘貼一樣。 WorkSheet對象確實有一個Paste方法,但是它離開了當前選中的單元格,而且從你說話的方式來看,你聽起來好像你不想這樣做。這使您可以指定一個單元格並直接粘貼到它。
你想只粘貼一行嗎?或者你想要將所有600個對象粘貼爲一個數組? – TheMadTechnician