我正在为PowerShell编写脚本,以从2个单独的Excel工作表中导入数据,比较这些工作表的所有属性,并使用此输出导出新的Excel工作表。 该脚本的目的是将更新的excel工作表与以前的版本进行比较,并找出已更改的内容,已添加的内容,甚至可能删除的内容。
我一直在使用Import-Excel模块来处理第一部分,并使用Compare-Object
进行数据比较。
据我所知,Import-Excel
将Excel数据导入到System.Object
中,这是PSCustomObjects的哈希表。每个PSCustomObject对应于Excel工作表中的一行。
我正在运行以下代码:
$global:InputdataA = Import-Excel -Path $InputA -WorkSheetname $InputSheetA
$global:InputdataB = Import-Excel -Path $InputB -WorkSheetname $InputSheetB
$global:ReferenceObject = $InputdataA
$global:DifferenceObject = $InputdataB
$global:InputdataHeadersA = $InputdataA[0].psobject.properties.name
$global:InputdataHeadersB = $InputdataB[0].psobject.properties.name
$props = $InputdataHeadersA
$props += $InputdataHeadersB
$props = $props | Select -Unique
$compareResult = Compare-Object -ReferenceObject $ReferenceObject -DifferenceObject $DifferenceObject -Property $props -PassThru -CaseSensitive
我正在使用2个excel文件进行测试:
Personnel_16_12_2018-small2.xlsx(以前的版本) Personnel_28_11_2018-small2.xlsx(具有更改和添加的新版本)
可以在这里下载文件:
https://ufile.io/bmstu https://ufile.io/3z62x
我希望看到的输出将只是更改/添加的7个条目,以及来自差异对象(excel工作表的新版本)的数据。这将代表最新的“正确”数据。
当前,我从比较对象得到一个输出,其中包含7个条目以及从参考对象(包括侧面指示器)更改的6个条目。
是否可以使比较对象仅返回更改,还是必须随后处理输出?
答案 0 :(得分:0)
根据您的其他信息和示例文件,您可以尝试执行以下操作:
9:00