Как вставить значение в ячейку, если в CSV найдено совпадение - PullRequest
0 голосов
/ 07 декабря 2018

Я хочу добавить два столбца в начале существующего CSV, который будет использоваться для хранения любых совпадений, найденных в этой строке, и номера строки.У меня правильно работает поиск, чтобы найти совпадения, я просто не уверен, как вставить / добавить найденные значения в существующую (или вновь созданную) электронную таблицу.

Моя первая проблема, когда я иду, чтобы добавить2 новых столбца с именами «ICHit» и «Line» удаляет весь мой CSV.Я также не уверен, с чего начать с добавления значений в соответствующие строки в CSV.

Заранее благодарен за любую помощь в этом!

Структура данных

COLUMNS = ICHit,Line,UserName,EmailAddress,Code

CellValues = MATCHGOESHERE,LINENUMBERHERE,Bob,Bob@gmail.com,12345


$date = Get-Date -UFormat "%Y-%m-%d"
$OutPutFileName = "SearchResults" + $date + ".csv"
$CSV= "U:\Found\$OutPutFileName"
$RXSearchList = "12345,bob@gmail.com"
$filetosearch = "\\server\SpreadsheetToSearch.csv"


Import-Csv $filetosearch |  #add new columns
Select-Object *,@{Name='column0';Expression={'setvalue'}} | 
Export-Csv $filetosearch -NoTypeInformation


$File2 = new-object System.IO.StreamWriter($CSV,$true) #Append or Create a new file Stream. 
$File2.WriteLine('ICHit,Line') # New Columns to add

$file = New-Object System.IO.StreamReader ($filetosearch)  # Input Stream
    while (($text = $file.ReadLine()) -ne $null ){
        foreach ($RX in $Global:RXSearchList){
            foreach ($match in ([regex]$RX).Matches($text)) {

                    $Global:File2.WriteLine("{0},{1}",$match.value,$text)  
            }
         }
        }
            $file.close();  
            $Global:File2.close() #file2
...