【问题标题】:Filling empty cells in CSV with powershell based upon cell above empty cell基于空单元格上方的单元格用powershell填充CSV中的空单元格
【发布时间】:2018-01-18 22:50:46
【问题描述】:

我有一个 CSV 文件,我需要每周对其进行操作。该操作的一部分是用正确的部门和品牌填充空单元格,因为它是用空单元格生成的以匹配条目。

例如,单元格 B34 包含文本“Frozen”,而单元格 B35 到 B40 为空。单元格 B41 包含文本“乳制品”。我想使用 powershell 将文本“Frozen”从单元格 B34 复制到单元格 B35 到 B40。

我四处寻找答案,但没有任何运气。

谢谢。

编辑:

我在 cmets 中使用了来自 wOxxOm 的代码,如下所示。

$csv = import-csv inputfilepath.csv
$prevRow = $csv[0]; 
foreach ($row in $csv[1..($csv.length-1)]) {
    if (!$row.subCatDesc) { $row.subCatDesc = $prevRow.subCatDesc }; $prevRow = $row | export-csv outputfilepath.csv
}

其中 subCatDesc 是列的标题。当我这样做时,它运行良好,但输出文件的单元格 A1 读取“#TYPE System.Management.Automation.PSCustomObject”,第 2 行包含与源文件相同的标题,然后只有第 3 行是最后的源文件的行。

编辑 2:

使用 TheIncorrigible1 的输入再次修改:

$csv = import-csv -Path inputfilepath.csv
$prevRow = $csv[1]; 
foreach ($row in $csv[2..($csv.length-1)]) {
    if (!$row.subCatDesc) { $row.subCatDesc = $prevRow.subCatDesc }; $prevRow = $row 
}
$csv | Export-Csv -Path outputfilepath.csv -NoTypeInformation

这清除了上述问题,实际上成功完成了任务,除了第一组空单元格(我的测试 CSV 中的单元格 B3 到 B19)保持为空并且没有复制 B2 的内容,即“奶酪” ”。

编辑 3:

再次调整:

$prevRow = $csv[0]

和 foreach ($row in $csv[1..csv.length-1]) {

最初由 wOxxOm 给出解决了这个问题。谢谢大家,现在可以了。

【问题讨论】:

  • 你试过了吗?发布代码,以便我们提供帮助。
  • 我没有,因为我没有最模糊的从哪里开始,而且我发现的相关代码 sn-ps 都没有完全符合我的要求。
  • 类似 $prevRow = $csv[0]; foreach ($row in $csv[1..($csv.length-1)]) { if (!$row.b) { $row.b = $prevRow.b }; $prevRow = $row }
  • 感谢 wOxxOm。我会玩这个并发布我的结果。我主要是真的需要一条腿。
  • 使用$csv = Import-Csv -Path 'file.csv' 和与成员一起玩耍作为起点。 Import-Csv 基于标头将其作为本机 PSObject 引入,因此易于操作。完成后可以使用$csv | Export-Csv -Path 'file.csv' -NoTypeInformation

标签: powershell csv data-manipulation


【解决方案1】:

根据上面的 cmets,生成的代码可以工作:

$csv = import-csv -Path inputfilepath.csv
$prevRow = $csv[0]; 
foreach ($row in $csv[1..($csv.length-1)]) {
    if (!$row.subCatDesc) { $row.subCatDesc = $prevRow.subCatDesc }; $prevRow = $row 
}
$csv | Export-Csv -Path outputfilepath.csv -NoTypeInformation

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多