gpt4 book ai didi

excel - 如何使用 Powershell 将 CSV 导出到 Excel

转载 作者:行者123 更新时间:2023-12-05 01:02:28 24 4
gpt4 key购买 nike

我正在尝试使用 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 中的所有值和 vm列到 Excel

  • 我的问题
  • 如果我不知道列标题怎么办? (在我们的示例中 namevm )。如何处理我不知道其 header 名称的值?
  • 如何计算 CSV 有多少列? (使用 Import-Csv 阅读后)

  • 我只想用 Powershell 将整个 CSV 写入 Excel

    最佳答案

    Ups,我完全忘记了这个问题。与此同时,我得到了解决方案。
    此 Powershell 脚本在后台将 CSV 转换为 XLSX
    噱头是

  • 将所有 CSV 值保留为纯文本,如 =B1+B20000001 .
    你看不到 #Name或类似的东西。没有进行自动格式化。
  • 根据您的区域设置自动选择正确的分隔符(逗号或分号)
  • 自动调整列

  • PowerShell 代码
    ### Set input and output path
    $inputCSV = "C:\somefolder\input.csv"
    $outputXLSX = "C:\somefolder\output.xlsx"

    ### Create a new Excel Workbook with one empty sheet
    $excel = New-Object -ComObject excel.application
    $workbook = $excel.Workbooks.Add(1)
    $worksheet = $workbook.worksheets.Item(1)

    ### Build the QueryTables.Add command
    ### QueryTables does the same as when clicking "Data » From Text" in Excel
    $TxtConnector = ("TEXT;" + $inputCSV)
    $Connector = $worksheet.QueryTables.add($TxtConnector,$worksheet.Range("A1"))
    $query = $worksheet.QueryTables.item($Connector.name)

    ### Set the delimiter (, or ;) according to your regional settings
    $query.TextFileOtherDelimiter = $Excel.Application.International(5)

    ### Set the format to delimited and text for every column
    ### A trick to create an array of 2s is used with the preceding comma
    $query.TextFileParseType = 1
    $query.TextFileColumnDataTypes = ,2 * $worksheet.Cells.Columns.Count
    $query.AdjustColumnWidth = 1

    ### Execute & delete the import query
    $query.Refresh()
    $query.Delete()

    ### Save & close the Workbook as XLSX. Change the output extension for Excel 2003
    $Workbook.SaveAs($outputXLSX,51)
    $excel.Quit()

    关于excel - 如何使用 Powershell 将 CSV 导出到 Excel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17688468/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com