好吧,我有6個CSV,每個包含一列。對於此示例,來自第一個CSV的數據用於創建初始文檔,然後每個數據都試圖保存到文檔中。PowerShell錯誤創建XLSX
#ID
$csvFile = "$path\ID.csv"
$fpath = $Filename
$processes = Import-Csv -Path $csvFile
$Excel = New-Object -ComObject excel.application
$Excel.visible = $false
$workbook = $Excel.workbooks.add()
$excel.cells.item(1,1) = "ID"
$i = 2
foreach($process in $processes)
{
$excel.cells.item($i,1) = $process.ID
$i++
} #end foreach process
$workbook.saveas($fpath)
$Excel.Quit()
Remove-Variable -Name excel
[gc]::collect()
[gc]::WaitForPendingFinalizers()
#SRP
$csvFile = "$path\SRP.csv"
$processes = Import-Csv -Path $csvFile
$Excel = New-Object -ComObject excel.application
$Excel.visible = $false
$workbook = $Excel.workbooks.add()
$excel.cells.item(1,2) = "SRP"
$i = 2
foreach($process in $processes)
{
$excel.cells.item($i,2) = $process.SRP
$i++
} #end foreach process
$workbook.save($fpath)
$Excel.Quit()
Remove-Variable -Name excel
[gc]::collect()
[gc]::WaitForPendingFinalizers()
當我坐下來的第二個(#SRP
部分)我得到以下錯誤的節約線路:
Cannot find an overload for "Save" and the argument count: "1".
At D:\UserAdminScripts\0_Powershell_Test_Scripts\Scripts_For_Lisa\NED Stuff\NED_Reports.ps1:130 char:15
+ $workbook.save <<<< ($fpath)
+ CategoryInfo : NotSpecified: (:) [], MethodException
+ FullyQualifiedErrorId : MethodCountCouldNotFindBest
如果我讓腳本錯誤後運行,我得到相同每列的結果。
我知道這個腳本並不乾淨,因爲我不需要關閉並重新打開每個運行Excel,但我從http://blogs.technet.com/b/heyscriptingguy/archive/2010/09/09/copy-csv-columns-to-an-excel-spreadsheet-by-using-powershell.aspx屠殺此腳本。 saveas
在第一次嘗試中正常工作,它只是save
導致錯誤。
我發現,當我打破腳本,我彈出確認是否要更改Book2.xlsx。我告訴它是的,我檢查並且Book2的第二列填寫了我想要的數據作爲我原始表單上的第二列。
任何幫助表示讚賞。
將取出'$ workbook.saveas($ fpath)'' $ Excel.Quit()'' 刪除變量-Name excel' '[ gc] :: collect()' '[gc] :: WaitForPendingFinalizers()'完全直到我試圖添加所有6列,而沒有做任何直到最後纔是解決方案? – Nate