最后8个在Excel中使用了行。 电源shell

我已经看了全部,我似乎无法find这个答案。 而不是从A1到G8中select,我只是希望它select最后的8个USED行。 不知道在这里使用什么。

$pathtsv = "C:\xxxxxx.mdf" $pathxlsx = "C:\xxxxxxxxxxxxxx.xlsx" $Excel = New-Object -ComObject "Excel.Application" $Excel.Visible=$true $Workbook = $Excel.Workbooks.Open($pathxlsx) $TempWorkbook = $Excel.Workbooks.Opentext($pathtsv) $temp = $excel.Workbooks.Item(2) $temp = $temp.Worksheets.Item(1) $CopyRange = $temp.Range("A1:G8") $CopyRange.Copy() 

提前致谢。

我build议使用Doug Finke的ImportExcel模块,而不是使用Excel作为COM对象。 然后,Excel文档可以很容易地导入为一个PowerShell对象,然后可以通过Select-Object -Last 8$ImportedExcelObject[-8..-1]过滤,然后重新导出我采用制表符分隔格式。

 Install-Module ImportExcel $pathtsv = "C:\xxxxxx.mdf" $pathxlsx = "C:\xxxxxxxxxxxxxx.xlsx" Import-Excel $pathxlsx | Select-Object -Last 8 | Export-CSV $pathtsv -Delimiter "`t" 

注意:PowerShell 5+中默认包含Install-Module命令。


以下是使用ImportExcel模块中的Export-Excel cmdlet从Excel文档中的tsv到特定行和列的相反方式的更新代码。

 Install-Module ImportExcel $pathtsv = 'C:\xxxxxx.mdf' $templatexls = 'C:\yyyyyyyyyy.xlsx' $pathxlsx = 'C:\xxxxxxxxxxxxxx.xlsx' Copy-Item $templatexls $pathxlsx Import-CSV $pathtsv -Delimiter "`t" | Select-Object -Last 8 | Export-Excel -Path $pathxlsx -WorksheetName 'Sheet1' -Show -StartRow 3 -StartColumn 1 -NoHeader