excel 中最后 8 个使用的行。电源外壳

Last 8 used rows in excel. Powershell

我找遍了,似乎找不到答案。我不想 select 从 A1 到 G8,而是希望它 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() 

提前致谢。

我建议使用 ImportExcel module by Doug Finke 而不是使用 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 命令。


这是更新后的代码,使用导入Excel 模块中的 Export-Excel cmdlet 从 tsv 到 Excel 文档中特定行和列的相反方式。

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