2017-08-10 87 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 
相關問題