Powershell – 将最后一行TSV复制并粘贴到Excel中的特定单元格

好的,第三次希望能把我带到那里。 我一直在研究这个脚本一段时间,只需要一点帮助,让我在终点线。 我正在尝试编写一个脚本,用于获取TAB分隔文件的最后X行(本例中为8行)的PowerShell脚本,并将其粘贴到我创build的Excel模板中的特定单元格中。 我已经尝试了批量和VBS无济于事。

到目前为止,这是我提出的代码:

$pathtsv = “C:\test.txt” | Select -Last 8 $pathxlsx = “C:\NBP ESP-152 REV F TEMPLATE.xlsx” $Excel = New-Object -ComObject excel.application $Excel.visible = $true $Workbook = $excel.Workbooks.open($pathtsv) $Workbook2 = $excel.Workbooks.open($pathxlsx) $Worksheet = $Workbook.WorkSheets.item(“Overview”) $Worksheet.activate() $range = $WorkSheet.Range(“A3:J10”).CurrentRegion $range.Copy() | out-null $Worksheet2 = $Workbook2.Worksheets.item(“RAW DATA”) $worksheet2.activate() $range2 = $Worksheet2.Range(“A3:A3”) $Worksheet2.Paste($range2) $Excel.Quit() [gc]::collect() [gc]::WaitForPendingFinalizers() 

以下是我试图复制的TSV文件的示例:

 09/29/17 12:49:31 NBP 00022 10.013 5955.000 7.198 0.309 24.017 60.658 CW 20.057 0.000 0.091 0.000 0.000 0.000 CW 31.050 5954.000 7.094 0.302 24.016 61.432 CCW 41.083 0.000 0.547 0.000 0.000 0.000 CCW 47.081 0.000 78.460 2.104 4.515 0.000 CW 52.099 0.000 82.710 2.156 4.516 0.000 CCW 57.234 0.000 103.000 2.858 6.217 0.000 CW 62.247 0.000 111.000 2.887 6.216 0.000 CCW 

这是模板看起来像我想要粘贴到(@ A,3)。

突出显示它将被粘贴的位置

这对我工作…你可能需要改变一点,这取决于你的名单你的名字:

 $pathtsv = "\test.txt" $pathxlsx = "\NBP ESP-152 REV F TEMPLATE.xlsx" $Excel = New-Object -ComObject "Excel.Application" $Excel.Visible=$true $Workbook = $Excel.Workbooks.Open($pathxlsx) # Open Template $TempWorkbook = $Excel.Workbooks.Opentext($pathtsv) # Open text file in excel $temp = $excel.Workbooks.Item(2) #select workbook with text $temp = $temp.Worksheets.Item(1) #select text worksheet $CopyRange = $temp.Range("A1:G8") #set range $CopyRange.Copy() #copy data $workbooksheet = $Workbook.Worksheets.Item(1)#sets doc to copy to $Workbooksheet.activate() $PasteRange = $workbooksheet.Range("A3:J10") #sets range $workbooksheet.Paste($PasteRange)#paste data #save and close the workbook $Workbook.Close($true) $Excel.Quit() while( [System.Runtime.Interopservices.Marshal]::ReleaseComObject($Excel)){} [gc]::collect() [gc]::WaitForPendingFinalizers() 

请注意, $Excel.Workbooks.Opentext不会返回任何内容,只会在Excel中打开它。