使用Powershell将CSV数据插入Excel中下一个可用的相应单元格

我有一个查询导出到CSV每周,其中包含相同的标题和列顺序作为我的Excel数据表。 PowerShell脚本将在一个事件计时器,我想它抓住CSV和导入数据在下一个可用单元格与相应的标题。 我不希望它覆盖现有的数据,本质上它是一个增长的表格。

环境:Powershell V3 w / ISE类固醇和Excel 2013

这是我当前的代码不工作:

Add-Type -AssemblyName Microsoft.Office.Interop.Excel $Excel = New-Object -ComObject Excel.Application $xlLastCell = [Microsoft.Office.Interop.Excel.Constants]::xlLastCell $xlFile = 'C:\Users\me\Desktop\Test\Agents Stats 2016.xlsx' $csvFile = 'C:\Users\me\Desktop\Test\Data\AgentStats.csv' $Excel.Visible = $true $ExcelWordBook = $Excel.Workbooks.Open($xlFile) $ExcelWorkSheet = $Excel.WorkSheets.item('rawdata') $ExcelWorkSheet.activate() $objRange = $ExcelWorkSheet.UsedRange $lastRow = $objRange.SpecialCells($xlLastCell).Row $ExcelWorkSheet.cells($lastRow,1).Select() $AgentStats = Import-Csv -Path C:\Users\me\Desktop\Test\Data\AgentStats.csv $AgentStats.foreach{ $lastRow += 1 $ExcelWorkSheet.cells($lastRow,1).value = $psitem.COUNT $ExcelWorkSheet.cells($lastRow,2).value = $psitem.STATUS $ExcelWorkSheet.cells($lastRow,3).value = $psitem.OPERATOR $ExcelWorkSheet.cells($lastRow,4).value = $psitem.PRODUCT $ExcelWorkSheet.cells($lastRow,5).value = $psitem.WEEK } $ExcelWordBook.Save() $ExcelWordBook.Close() $Excel.Quit() 

我收到以下错误,我无法弄清楚为什么:

在行:19 char:20 + $ AgentStats.foreach {+〜expression式或语句中的意外的标记'{' + CategoryInfo:ParserError:(:) [],ParentContainsErrorRecordException + FullyQualifiedErrorId:UnexpectedToken

[16,1]方法调用失败,因为[System .__ ComObject]不包含名为'cells'的方法。

[21,3]方法调用失败,因为[System .__ ComObject]不包含名为'cells'的方法。

[22,3]方法调用失败,因为[System .__ ComObject]不包含名为“cells”的方法。

[23,3]方法调用失败,因为[System .__ ComObject]不包含名为“cells”的方法。

[24,3]方法调用失败,因为[System .__ ComObject]不包含名为“cells”的方法。

[25,3]方法调用失败,因为[System .__ ComObject]不包含名为“cells”的方法。

我过去一天search了这些错误,并且用“Foreach”欺骗了这个方法,结果没有成功。 然而,“细胞com对象”是合法的,确实存在,我不能为了我的生活找出为什么这个错误正在发生。

预先感谢您的帮助,我是Powershell的新手。

1)你使用了错误的格式:

 $AgentStats.foreach( #Not the squiggelies $lastRow += 1 $ExcelWorkSheet.cells($lastRow,1).value = $psitem.COUNT $ExcelWorkSheet.cells($lastRow,2).value = $psitem.STATUS $ExcelWorkSheet.cells($lastRow,3).value = $psitem.OPERATOR $ExcelWorkSheet.cells($lastRow,4).value = $psitem.PRODUCT $ExcelWorkSheet.cells($lastRow,5).value = $psitem.WEEK ) 

2)我认为你的对象声明是不正确的:

 $ExcelWordBook = $Excel.Workbooks.Open($xlFile) $ExcelWorkSheet = $ExcelWordbooks.item('rawdata') #here, use your excelwordbooks-object $ExcelWorkSheet.activate() #Not necessary