【发布时间】: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