【问题标题】:Add array to CSV column将数组添加到 CSV 列
【发布时间】:2017-11-08 19:23:01
【问题描述】:

我在这里搜索了很多答案,但我很难找到具体问题的答案。

我有一个带有两个标题的 CSV。 “字段数”和“字段名称”。我有一个名为 $headers = @() 的变量,我在其中保存了我正在导入的另一个 CSV 的 66 个标头。

我想将$headers 输入到 CSV 的“字段名称”列中。到目前为止,我发现的唯一选择是

$obj | Add-Member -MemberType NoteProperty -Name "Field names" -Value $headers[0]

显然,我不仅需要将数组中的第一个值添加到$obj

输入 CSV - 我使用 CSV 获取所有标题

Get-Member -MemberType 'NoteProperty' | Select-Object -ExpandProperty 'Name'

我想将所有这些标题放入一个新的 CSV,其中包含一个名为“标题”的列。像这样的:

Col1 标题 第 1 行标题 1 第 2 行标题 2 第 3 行标题 3 第 4 行标题 4 等等

【问题讨论】:

  • 显然你可以循环。 $headers | %{ Add-Member $_ } 但是你有理由不将它们保留为 powershell 对象吗?为什么将它移动到一个数组,然后又回到一个自定义对象?
  • 我需要创建一个与我从中导入数据的 csv 格式完全不同的“结果”csv。你能向我解释一下如何 $headers | %{ Add-Member $_ } 会起作用吗?谢谢!
  • 我知道我猜是否有限制,但这不是这样做的理由。您可以轻松地从一个中提取,进行编辑,然后将它们放置在一个新对象中。或者只是操纵现有的。
  • $headers[0] 引用第一个对象。您可以将集合 $headers,管道到每个循环 |% 并以这种方式添加标题的每个成员。这基本上就是它的工作原理。与在集合大小处最大化的 for 循环相同,使用 $headers[$i]。
  • 是所有字段名称都在一行还是每行一个?也许,您应该提供最终结果的样本。

标签: powershell export-to-csv


【解决方案1】:

基本上,您只需将标题的Name 属性导出为新的CSV。实现这一点的最简单方法是calculated property

... | Get-Member -MemberType 'NoteProperty' |
    Select-Object @{n='Headers';e={$_.Name}} |
    Export-Csv 'C:\path\to\headers.csv' -NoType

【讨论】:

  • 如果我想在 csv 中添加多个列,而不仅仅是标题列,我该怎么做?
  • 您可以随意混合计算属性和常规属性:Select-Object Foo, @{n='Bar',e={...}}, Baz, ...
  • 此解决方案的唯一其他问题是我无法将其附加到现有的 CSV。有没有简单的解决方案?
  • 请自行阅读documentation
猜你喜欢
  • 1970-01-01
  • 2016-01-18
  • 2022-01-16
  • 1970-01-01
  • 2013-06-05
  • 2023-03-23
  • 1970-01-01
  • 2019-06-12
相关资源
最近更新 更多