【问题标题】:Last 8 used rows in excel. Powershellexcel中最后8个使用的行。电源外壳
【发布时间】:2017-11-17 00:04:22
【问题描述】:

我已经看遍了,我似乎无法找到答案。我不想从 A1 到 G8 进行选择,而是希望它在它创建的导入中选择最后 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() 

提前致谢。

【问题讨论】:

标签: excel powershell copy-paste


【解决方案1】:

我建议使用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"

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


这是使用 ImportExcel 模块中的 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

【讨论】:

  • 感谢您的快速回复!目标是将其从 TSV 中取出并放入 excel 模板中。我只想将它从(当前 A1:G8)复制的内容更改为最后 8 个使用的行。我有脚本设置的其余部分,我只需要能够更改正在复制的内容,因为我从中提取的制表符分隔文件是累积的。
猜你喜欢
  • 1970-01-01
  • 2020-07-27
  • 2018-01-03
  • 1970-01-01
  • 2019-11-26
  • 1970-01-01
  • 2021-11-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多