如何用PowerShell将Excel多列内容合并为指定格式的单列
PowerShell 合并Excel多列方案
我们使用社区广泛使用的ImportExcel模块实现需求,无需本地安装Office即可运行。
1. 安装依赖模块
打开管理员权限的PowerShell窗口,执行如下命令安装模块:
Install-Module -Name ImportExcel -Scope CurrentUser -Force
首次安装若提示信任PSGallery仓库,输入Y确认即可。
2. 合并列脚本
以下为可直接修改使用的脚本示例:
# 导入依赖模块 Import-Module ImportExcel # 基础配置项,按需修改即可 $sourceExcelPath = "替换为你的源Excel文件绝对路径" $outputExcelPath = "替换为输出结果的Excel文件路径" # 填写要合并的列的表头名称,顺序和下方合并模板的占位符一一对应 $mergeColumns = @("姓名", "部门", "工号") # 合并格式模板,{0}对应上面数组第一个列,{1}对应第二个,以此类推 $mergeTemplate = "{0} - {1}(工号:{2})" # 合并后的新列的列名 $newColumnName = "合并结果" # 读取源Excel数据 $excelContent = Import-Excel -Path $sourceExcelPath # 逐行合并指定列 $processedContent = $excelContent | ForEach-Object { $valueList = $mergeColumns | ForEach-Object { $_.$_ } $_ | Add-Member -MemberType NoteProperty -Name $newColumnName -Value ($mergeTemplate -f $valueList) -PassThru } # 导出结果到新Excel $processedContent | Export-Excel -Path $outputExcelPath -AutoSize -Show
3. 自定义调整说明
- 需要合并更多列时,直接往
$mergeColumns数组中添加对应表头名称,同时在$mergeTemplate中按序号新增{n}占位符即可 - 如果你的Excel没有表头,在
Import-Excel命令后添加-NoHeader参数,系统会自动将列命名为Column1、Column2,直接把这些自动生成的列名填入$mergeColumns即可 - 若需要直接修改原Excel文件,将
$outputExcelPath设置为和$sourceExcelPath相同的路径即可
内容的提问来源于stack exchange,提问作者Maxime L
相关产品推荐
相关产品推荐

