我正在尝试使用 Powershell 将完整的 CSV 导出到 Excel。我停留在使用静态列名的地方。但是,如果我的 CSV 具有通用的未知标题名称,这将不起作用。
重现步骤
打开您的 PowerShell ISE 并复制并粘贴以下独立代码。使用F5
“C:\Windows\system32\WindowsPowerShell\v1.0\powershell_ise.exe”运行它
Get-Process | Export-Csv -Path $env:temp\process.csv -NoTypeInformation
$processes = Import-Csv -Path $env:temp\process.csv
$Excel = New-Object -ComObject excel.application
$workbook = $Excel.workbooks.add()
$i = 1
foreach($process in $processes)
{
$excel.cells.item($i,1) = $process.name
$excel.cells.item($i,2) = $process.vm
$i++
}
Remove-Item $env:temp\process.csv
$Excel.visible = $true
它能做什么
- 该脚本会将所有活动进程的列表作为 CSV 导出到您的临时文件夹。该文件仅用于我们的示例。它可以是任何包含任何数据的 CSV
- 它读入新创建的 CSV 并将其保存在
$processes
变量下 - 它创建了一个新的空 Excel 工作簿,我们可以在其中写入数据
- 它遍历所有行(?)并将所有值从
name
andvm
列写入 Excel
我的问题
- 如果我不知道列标题怎么办?(在我们的示例中
name
和vm
)。如何处理我不知道其标头名称的值? - 如何计算 CSV 有多少列?(用 阅读后
Import-Csv
)
我只想用 Powershell 将整个 CSV 写入 Excel