使用PowerShell Import-Excel模块基于VM列合并两个Excel文件
用Import-Excel模块合并两个Excel文件(基于VM列关联)
前提准备
确保服务器已安装ImportExcel模块,若未安装,执行以下命令(需管理员权限):
Install-Module -Name ImportExcel -Scope CurrentUser -Force
实现步骤与代码
- 导入两个Excel文件的数据
# 替换为实际文件路径 $file1Path = "C:\YourPath\File_1.xlsx" $file2Path = "C:\YourPath\File_2.xlsx" $file1Data = Import-Excel -Path $file1Path $file2Data = Import-Excel -Path $file2Path
- 构建哈希表快速匹配VM对应的额外列
把File_1中VM与需要合并的列映射到哈希表,提升匹配效率:
$vmExtraData = @{} foreach ($entry in $file1Data) { $vmExtraData[$entry.VM] = [PSCustomObject]@{ 'System / Category' = $entry.'System / Category' 'Sub-System V2.0' = $entry.'Sub-System V2.0' 'FULL VM DRP' = $entry.'FULL VM DRP' } }
- 合并数据并生成结果集
遍历File_2的每一行,将对应VM的额外列数据合并进去:
$mergedResult = foreach ($entry in $file2Data) { $extra = $vmExtraData[$entry.VM] [PSCustomObject]@{ VM = $entry.VM powerState = $entry.powerState 'System / Category' = $extra.'System / Category' ?? $null 'Sub-System V2.0' = $extra.'Sub-System V2.0' ?? $null 'FULL VM DRP' = $extra.'FULL VM DRP' ?? $null } }
- 导出合并结果到新Excel文件
# 替换为实际输出路径 $outputPath = "C:\YourPath\Merged_VM_Data.xlsx" $mergedResult | Export-Excel -Path $outputPath -AutoSize -BoldTopRow
注意事项
- 若File_1中存在重复VM值,哈希表会保留最后一条匹配记录,需处理重复项的话可调整哈希表存储逻辑(比如存数组)
- 代码采用左连接逻辑:保留File_2的所有行,若File_1中无对应VM,额外列会填充
$null - 若需要其他关联方式(如内连接、右连接),可修改遍历和匹配逻辑
内容的提问来源于stack exchange,提问作者snehasish nandy
相关产品推荐
相关产品推荐

