【发布时间】:2017-08-16 18:14:53
【问题描述】:
由于公司政策,我无法使用编程工具。
我正在使用 PowerShell 转换文件夹中包含的多个 Excel 文件,以将这些文件转换为 CSV,然后将这些 CSV 合并在一起。
到目前为止,我已经创建了我的脚本,以便它转换所有 excel 文件并创建另一个部分,将这些 CSV 组合起来并将其输出为 1 个 CSV
我的问题:
输出 CSV 没有将相似的标题组合在一起,本质上我创建的输出 CSV 是无用的。
我有 8 个带有以下标题的 CSV 文件
输入:(CSV)
- Grantee, Role, Admin, Delegator, Default, Common
- Grantee, Role, Admin, Delegator, Default, Common
- Grantee, Role, Admin, Delegator, Default, Common
- Grantee, Role, Admin, Delegator, Default, Common
- 受让人、角色、管理员、默认
- 受让人、角色、管理员、默认
- 受让人、角色、管理员、默认
- 受让人、角色、管理员、默认
输出:
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