使用 Powershell 添加新列并填充工作表名称

2024-07-04

我正在尝试操作下面的代码以在输出中创建一个新列并在新列中分配工作表名称。

$param = @{
    Path       = 'C:\TEMP\Template\TemplateName.xlsx'
    StartRow   = 5
    HeaderName = 'Property', 'Current settings', 'Proposed settings'
}

# foreach worksheet in this file
Get-ExcelSheetInfo -Path 'C:\TEMP\Template\TemplateName.xlsx' | ForEach-Object {
    # set the worksheetname name in $param
    $param['WorksheetName'] = $_.Name
    # import the worksheet and enumerate it
    foreach($line in Import-Excel @param) {
        $currSettings = $line.'Current settings'
        $propSettings = $line.'Proposed settings'
        # if the value of 'Current settings' cell is equal to the value of
        # 'Proposed settings' cell OR is empty / white spaces, skip it, go to next iteration
        if($currSettings -eq $propSettings -or [string]::IsNullOrWhiteSpace($currSettings)) {
            continue
        }
        # if we're here, condition before this was not true, hence we want to
        # output this line
        $line
    }
} | Export-Excel -Path C:\Temp\Template\Changes.xlsx -AutoSize

工作表名称已分配给 $_.Name 变量,但我想将其添加到所有行旁边的新列 (A) 中。例如。从特定工作表中取出的每一行都应在 A 列中具有工作表名称。


您可以使用计算属性Select-Object https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/select-object?view=powershell-7.2#example-11--create-calculated-properties-for-each-inputobject重新创建每个对象($line)添加WorksheetName财产:

Get-ExcelSheetInfo -Path 'C:\TEMP\Template\TemplateName.xlsx' | ForEach-Object {
    $param['WorksheetName'] = $_.Name
    foreach($line in Import-Excel @param) {
        $currSettings = $line.'Current settings'
        $propSettings = $line.'Proposed settings'
        if($currSettings -eq $propSettings -or [string]::IsNullOrWhiteSpace($currSettings)) {
            continue
        }
        $line | Select-Object @{N='WorksheetName';E={$param['WorksheetName']}}, *
    }
} | Export-Excel -Path C:\Temp\Template\Changes.xlsx -AutoSize

或者,您可以将新属性添加到现有对象,而不是重新创建它,但这会将该属性添加到最后一个位置(Excel 文件中的最后一列):

# update the object
$line.PSObject.Properties.Add([psnoteproperty]::new('WorksheetName', $_.Name))
# output the object, to be captured by `Export-Excel`
$line
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Powershell 添加新列并填充工作表名称 的相关文章

随机推荐

  • 配置 argparse 以接受带引号的参数

    我正在编写一个程序 除其他外 它允许用户通过参数指定要加载的模块 然后用于执行操作 我试图建立一种方法来轻松地将参数传递到这个内部模块 并且我试图使用 ArgParse 的action append 让它构建一个参数列表 然后我将通过它 这
  • 如何将 SQL 转储导入表而不覆盖重复字段

    如何将 MySQL 转储文件导入数据库而不覆盖具有相同值的记录 这里是link http dev mysql com doc refman 5 0 en mysqlimport html到手册 您可以指定是否替换现有记录 replace r
  • 如何在MongoDB聚合中添加自增字段?

    我想添加一个附加的键数字 其中包含自动递增数字的值 我怎样才能实现这个目标 下面是查询 不进行unwind和group是否可以达到这个结果 match iContestId 5e4118161a7b5765ee9b40ef project
  • Flask:如何从模板目录下提供静态文件?

    我使用 Flask 并想要更改我的资产文件夹目录 这是我的文件夹结构 python static js img font css templates default css js img venv app py 我想移动静态文件夹下的所有文
  • Python下载具有特定文件名的youtube

    我正在尝试下载 youtube 视频pytube这边走 from pytube import YouTube YouTube http youtube com watch v 9bZkp7q19f0 streams first downlo
  • Vb.Net动作委托问题?

    我是 vb net 新手 这个问题可能很新手 之前已经回答过 但我找不到 我正在尝试 lambda 功能并在这里受到打击 Private Function HigerOrderTest highFunction as Func Of Int
  • System.Diagnostics.Process UseShellExecute 到底做了什么?

    我有一个 MSBuild 任务 它执行 除其他外 对 xcopy 的调用 我发现 当我从批处理文件运行 MSBuild 任务时 对 xcopy 的调用可以正确执行 并且无法执行或生成任何输出 无法让我知道从另一个批处理文件调用同一个批处理文
  • Android 变量 OnClick 监听器

    有没有一种方法可以为许多按钮提供 1 个 onClick Lister 我可以在其中抛出一个 case 语句来根据单击的按钮执行操作 我知道我可以为 100 个按钮创建 100 个不同的侦听器 但我必须认为我可以创建一些漂亮的变量来用更少的
  • C# 2.0中使用HashSet,兼容3.5

    我真的很想在我的程序中使用哈希集 使用字典感觉很丑 有一天我可能会开始使用 VS2008 和 Net 3 5 所以我的理想是即使我不能 或者我可以 使用hashsets http msdn microsoft com en us libra
  • 如何才能运行性能测试十次以上?

    默认情况下 Xcode 性能测试会运行十次 我的结果是这十次测试的平均值 问题是每次运行时平均结果变化很大 因此我必须运行测试至少五次才能获得收敛结果 这既乏味又耗时 有没有办法配置 XCode 或单元测试本身运行十次以上 XCTestCa
  • 通过 DOMParser 渲染时,HTML 5 视频不会显示在 Safari 中(通过 innerHTML 渲染工作正常)

    注意 有很多关于视频无法在 safari 上渲染的问题 这个问题是关于在 Safari 中使用 DOMParser 渲染视频 如果我使用innerHTML 渲染视频 一切正常 我有最简单的 HTML 5 视频 它是通过以下方式呈现的DOMP
  • 对多个表进行排序 MYSQL DateStamp

    我正在构建一个简单的买卖网站 并希望在第一页上列出最新的广告 在我的数据库中有 4 个表 USERS CARS ELECTRONICS and COMPUTERS 三个项目表中的每一个 CARS ELECTRONICS and COMPUT
  • 使用 bs4 进行 HTML 解析

    我正在解析一个 HTMl 页面 并且很难弄清楚如何在没有类或 id 的情况下提取某个 p 标签 我试图用经纬度到达 p 标签 这是我当前的代码 import bs4 from urllib import urlopen as uReq th
  • Angular ui - 选项卡控制器执行多次

    当我单击一个选项卡时 相应的控制器会执行 4 次 为什么 E g DetailsPersonController s init函数执行了4次 仅应在加载选项卡视图后执行 HTML 标签
  • 如何在使用 maven release-plugin 和 git 发布期间避免“更新被拒绝,因为远程包含工作”?

    我们最近从 SVN 迁移到 git 除了在 git 上发布的其他 意外 问题之外 我想知道如何处理以下问题 当我在 Jenkins 上开始发布运行并且某些开发人员 意外地 在发布的第一阶段进行推送时 发布构建失败并出现以下错误 ERROR
  • Spring Data REST - @PrePersist 和 @HandleBeforeCreate 之间的区别?

    I use Spring Data Rest over JPA映射 JPA提供 PrePersist在数据库中持久化实体之前要调用的方法的注释 Spring Data Rest 提供 HandleBeforeCreate捕获实体创建事件时调
  • Django QuerySet 中计算列的总和

    鉴于以下情况Contribution model class Contribution models Model start time models DateTimeField end time models DateTimeField n
  • 使用初始 IIS 设置安装 Web 应用程序;使用 WiX,需要升级文件,而不是更改 IIS 设置

    我有一个 WiX 安装项目 其中包括虚拟目录的 IIS 设置和带有应用程序池的应用程序设置 初始安装后 客户将从 wxs conf 中设置的默认网络服务中更改应用程序池标识 如何构建一个可以更新 Web 文件但不更改 IIS 设置 应用程序
  • 计算 r 中的相对 RMSE

    为了获得预测模型和真实值的相对 RMSE 我使用了代码 ratio lt prediction1 ISEtrain rRMSE1 lt sqrt mean 1 ratio 2 但我失败了 输出为 1 Inf 我的代码有什么问题吗 谢谢 你正
  • 使用 Powershell 添加新列并填充工作表名称

    我正在尝试操作下面的代码以在输出中创建一个新列并在新列中分配工作表名称 param Path C TEMP Template TemplateName xlsx StartRow 5 HeaderName Property Current