这应该很简单。我希望从my previous question(s)获取信息,这是一张CSV,并将它们放在现有的Excel文档中。
这里是现有数据(以CSV格式):
SO | Status | ElapsedHrs
PMTT12345678 Hit on Debra 2.5
PMTS23456789 Get rejected 4.25
PMTT87654321 Send some faxes 1.0
所以我有一个现有的Excel工作表,其中所有SO
类别需要从单元格6开始到列K,Status
从6开始转到L并且ElapsedHrs
去从单元格6开始到列O.
Using this以及其他一些例子,但我无法弄清楚语法。任何帮助再次受到赞赏。
到目前为止,我有这个:
$Excel = New-Object -ComObject excel.application
$Excel.visible = $false
$WorkBook = $objExcel.Workbooks.Open($ExportCsv)
$WorkBook2 = $excel.Workbooks.open($Template)
$Worksheet = $Workbook.WorkSheets.item(“$ExpCsvShort”)
$ExportCsv
是具有完整路径的CSV的名称。 $ExpCsvShort' is just the filename (the name changes based on the hour and date).
$ Template`是要写入数据的模板.xslx文件。
$range = $WorkSheet.Range(“A2”).EntireColumn
$range.Copy() | out-null
不确定这应该是什么,因为我希望列A
(减去标题)从6开始在$ Template上转到K.然后我希望C
从L6和{{开始1}}从O6开始,但我不知道语法。
有了这个:
D
但同样,我也不知道这个范围的语法。
这是我最终做的事情。
$Worksheet2 = $Workbook2.Worksheets.item(“Worklog”)
$worksheet2.activate()
$range2 = $Worksheet2.Range(“K6:K6”)
$Worksheet2.Paste($range2)
$workbook2.SaveAs($WorkLogSave)
$workbook.close($false)
$Excel.Quit()
[gc]::collect()
[gc]::WaitForPendingFinalizers()
可能是一种非常糟糕的方式,但它确实有效。此外,在所有内容关闭后,我仍然运行EXCEL.EXE。我已经阅读了5种杀死这个过程的方法,但是我担心如果我这样做会弄乱那些打开另一个文档的人,所以也许我可以$Excel = New-Object -ComObject excel.application
$Excel.visible = $true
$WorkBook = $excel.Workbooks.Open($ExportCsv)
$WorkBook2 = $excel.Workbooks.open($Template)
$Worksheet = $Workbook.WorkSheets.item($ExpCsvShort)
$Worksheet.activate()
#A Range Copy
$rangeAc = $WorkSheet.Range(“A2:A26”)
$rangeAc.Copy() | out-null
#Select sheet 2
$Worksheet2 = $Workbook2.Worksheets.item(“Worklog”)
$worksheet2.activate()
#A Range Paste
$rangeAp = $Worksheet2.Range(“K6:K30”)
$Worksheet2.Paste($rangeAp)
#C Range Copy
$rangeCc = $WorkSheet.Range(“C2:C26”)
$rangeCc.Copy() | out-null
#C Range Paste
$rangeCp = $Worksheet2.Range(“O6:O30”)
$Worksheet2.Paste($rangeCp)
#D Range Copy
$rangeDc = $WorkSheet.Range(“D2:D26”)
$rangeDc.Copy() | out-null
#D Range Paste
$rangeDp = $Worksheet2.Range(“L6:L30”)
$Worksheet2.Paste($rangeDp)
$workbook2.SaveAs($WorkLogSave)
$workbook2.close($true)
$workbook.close($true)
$Excel.Quit()
[gc]::collect()
[gc]::WaitForPendingFinalizers()
抓住-passthru
而是杀了那个,但我后来我会担心。
感谢所有人的帮助。
我喜欢使用那种引力,但我不确定我是怎么理解的。谢谢!