2017-03-23 140 views
0

由于公司政策,我对编程工具的访问权限有限。Powershell脚本合并多个CSV与一些共享头文件

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

到目前为止,我已经建立了我的脚本,使其将所有的Excel文件,并创建相结合的CSV格式,并输出到1个CSV另一部分

我的问题:

输出CSV做不会将相似的标题分组在一起,实质上我创建的输出CSV是无用的。

我有8 CSV与下列头

INPUT:(CSV的)

  1. 承授人,角色管理,委托者,默认,普通
  2. 承授人,角色管理,委托者,默认,普通
  3. 受让人,角色,管理员,委派者,默认,通用
  4. 受让人,角色,管理员,委派者,默认,通用
  5. 承授人,角色管理,默认
  6. 承授人,角色管理,默认
  7. 承授人,角色管理,默认
  8. 承授人,角色管理,默认

OUTPUT:

1 CSV用以下接头:

Grantee, Role, Admin, Delegator, Default, Common

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

这是我到目前为止有:

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。

回答

0

使用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文件

+0

感谢您的帮助Mathias,我认为我们正朝着正确的方向前进,但它似乎创造了一个永无止境的csv。这个过程继续运行直到我终止它。 – rpenergy

相关问题