2017-08-10 132 views
0

我有一个CSV文件,我拉下来,需要每周处理。部分操作是使用适当的部门和品牌填充空白单元格,因为它使用空单元格生成匹配条目。使用基于上面的单元格的PowerShell填充CSV空单元格空单元格

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

我环顾四周寻找答案,但一直没有任何运气。

谢谢。

编辑:

我用从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 

这清除了上面的问题,居然成功地完成了任务,与第一套空细胞的异常(细胞B3至B19在我的测试CSV)保持空白,而不是复制B2的内容是“奶酪”。

EDIT 3:

再次调整:

$prevRow = $csv[0] 

和 的foreach {

如最初由下式给出(在$ CSV [1..csv.length-1] $行) wOxxOm解决了这个问题。谢谢大家,它现在有效。

+2

你有没有给它一个去了吗?邮政编码,以便我们提供帮助。 – gms0ulman

+0

我还没有,因为我没有从哪里开始,也没有找到我所找到的相关代码片段。 – BryceJenkins

+0

类似于$ prevRow = $ csv [0]; foreach($ row in $ csv [1 ..($ csv.length-1)]){if(!$ row.b){$ row.b = $ prevRow.b}; $ prevRow = $ row} – wOxxOm

回答

0

基于上述这里的评论是结果代码的作品:

$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 
相关问题