【问题标题】:Powershell Script to Merge Multiple CSV with Some Shared Headers将多个 CSV 与一些共享标头合并的 Powershell 脚本
【发布时间】:2017-08-16 18:14:53
【问题描述】:

由于公司政策,我无法使用编程工具。

我正在使用 PowerShell 转换文件夹中包含的多个 Excel 文件,以将这些文件转换为 CSV,然后将这些 CSV 合并在一起。

到目前为止,我已经创建了我的脚本,以便它转换所有 excel 文件并创建另一个部分,将这些 CSV 组合起来并将其输出为 1 个 CSV

我的问题:

输出 CSV 没有将相似的标题组合在一起,本质上我创建的输出 CSV 是无用的。

我有 8 个带有以下标题的 CSV 文件

输入:(CSV)

  1. Grantee, Role, Admin, Delegator, Default, Common
  2. Grantee, Role, Admin, Delegator, Default, Common
  3. Grantee, Role, Admin, Delegator, Default, Common
  4. Grantee, Role, Admin, Delegator, Default, Common
  5. 受让人、角色、管理员、默认
  6. 受让人、角色、管理员、默认
  7. 受让人、角色、管理员、默认
  8. 受让人、角色、管理员、默认

输出:

1 个带有以下标头的 CSV:

Grantee, Role, Admin, Delegator, Default, Common

输出文件中可以有重复项, 我不知道如何处理没有“Delegator”和“Common”标头的 4 个 csv 的空值。

这是我目前所拥有的:

foreach($file in (Get-ChildItem "C:\Users\ZZZZZZ\Desktop\PROJECT"))
{
    $newname = $file.FullName -replace '\.xls$', '.csv'
    $ExcelWB = new-object -comobject excel.application
    $Workbook = $ExcelWB.Workbooks.Open($file.FullName)
    $Workbook.SaveAS($newname,6)
    $Workbook.Close($false)
    $ExcelWB.quit()
}

#combines all csv 
#combines them but does not line up the shared headers and also inserts the headers of the new csv into the sheet, would like to only have 1 header in the output

$files = Get-ChildItem C:\Users\ZZZZZZ\Desktop\Project\*.csv 
Get-Content $files | Set-Content C:\Users\ZZZZZZ\Desktop\Project\MERGED.csv

我非常感谢任何人可以给我的任何帮助,我必须做大量研究才能达到这一点“如何安装 powershell”、如何“编写”脚本”,这是我第一次使用 PowerShell。

【问题讨论】:

    标签: excel powershell csv merge


    【解决方案1】:

    使用Import-CsvExport-Csv cmdlet:

    Get-ChildItem C:\Users\ZZZZZZ\Desktop\Project\*.csv |ForEach-Object {
      Import-Csv $_.FullName
    } |Select-Object Grantee,Role,Admin,Delegator,Default,Common |Export-Csv C:\Users\ZZZZZZ\Desktop\Project\MERGED.csv -NoTypeInformation
    

    对于没有 DelegatorCommon 标头的文件,合并后的 CSV 文件中的值将为空

    【讨论】:

    • 感谢 Mathias 的帮助,我认为我们正朝着正确的方向前进,但它似乎创建了一个永无止境的 csv。该进程一直运行,直到我终止它。
    猜你喜欢
    • 1970-01-01
    • 2018-07-02
    • 2017-12-18
    • 2016-01-09
    • 1970-01-01
    • 2023-02-08
    • 1970-01-01
    • 1970-01-01
    • 2015-03-09
    相关资源
    最近更新 更多