我有一个导出为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()
我收到以下错误,我无法弄清楚原因:
at line:19 char:20 + $ AgentStats.foreach {+〜表达式或语句中的意外标记'{'。 + 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'的方法。
我在过去的一天搜索了这些错误,并且因为“Foreach”而无法利用。然而,“细胞com对象”是合法的,确实存在,我不能为我的生活找出错误发生的原因。
提前感谢您的帮助,我是Powershell的新手。
答案 0 :(得分:2)
1)你使用了错误的paranthesis:
$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