Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Powershell将CSV数据插入Excel中下一个可用的对应单元格_Excel_Csv_Powershell - Fatal编程技术网

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

使用Powershell将CSV数据插入Excel中下一个可用的对应单元格,excel,csv,powershell,Excel,Csv,Powershell,我有一个每周导出到CSV的查询,其中包含与excel数据表相同的标题和列顺序。powershell脚本将位于事件计时器上,我希望它能够获取CSV并将数据导入下一个可用单元格中,并带有相应的标题。我不希望它覆盖现有数据,本质上它是一个不断增长的表 环境:Powershell V3,配备ISE类固醇和Excel 2013 以下是我当前的代码,它不起作用: Add-Type -AssemblyName Microsoft.Office.Interop.Excel $Excel = New-Objec

我有一个每周导出到CSV的查询,其中包含与excel数据表相同的标题和列顺序。powershell脚本将位于事件计时器上,我希望它能够获取CSV并将数据导入下一个可用单元格中,并带有相应的标题。我不希望它覆盖现有数据,本质上它是一个不断增长的表

环境:Powershell V3,配备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{+~表达式或语句中意外的标记“{”。+CategoryInfo:ParserError:(:)[],ParentContainesErrorRecordException+FullyQualifiedErrorId:UnexpectedToken

[16,1]方法调用失败,因为[System.\uu-ComObject]不包含名为“cells”的方法

[21,3]方法调用失败,因为[System.\uuu ComObject]不包含名为“cells”的方法

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

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

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

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

在过去的一天里,我在谷歌上搜索了这些错误,但我一直在玩弄“Foreach”却无济于事。然而“cells-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

选择工作表:
$worksheet=$workbook.worksheets.item(1)
引用单元格:
$worksheet.cells.item(1,1).Text
,这纯粹是获取,我没有尝试设置。这些设置以前对我有效,如果无效,希望有帮助:只是根据我的记忆回答:尝试使用属性
值2
,因为我在excel中使用它。