我正在尝试使用Powershell将完整的CSV导出为Excel。我卡在了使用静态列名的点上。但是,如果我的CSV具有通用的未知标题名称,则此方法将不起作用。
复现步骤:
打开PowerShell ISE并复制以下独立代码。使用F5运行它。"C:\Windows\system32\WindowsPowerShell\v1.0\powershell_ise.exe"
复现步骤:
打开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
和vm
列中的所有值写入Excel。
我的问题
- 如果我不知道列标题怎么办?(在我们的示例中为
name
和vm
)。如何处理我不知道它们的标题名称的值? - 如何计算CSV文件具有多少列?(在使用
Import-Csv
读取后)
我只想用PowerShell将整个CSV文件写入Excel