Редактировать CSV без EXCEL - PullRequest
0 голосов
/ 22 мая 2019

Мне нужно отредактировать файл .CSV, сдвинув первый столбец данных на 1 строку. затем взять последнее значение в первом столбце и переместить его наверх. Любая идея, как я могу сделать это без использования

$objExcel = New-Object -ComObject Excel.Application

1 Ответ

0 голосов
/ 23 мая 2019

Хотя я не знаю, почему вы хотите повернуть значения в одном из столбцов, вот как вы можете сделать это без необходимости в Excel.

Из ваших комментариев я собираю файл CSVне имеет заголовков и содержит только строки данных.Из-за этого при импорте данных добавляются заголовки:

Предположим, ваш CSV-файл выглядит следующим образом:

Clothing Rental,Chicago Illinois,1,25
Clothing Purchase,Dallas Texas,2,35
Clothing Free of Charge,Phoenix Arizona,3,45

Тогда следующее должно делать то, что вы хотите:

$data = Import-Csv -Path 'D:\yourdata.csv' -Header 'Stuff','City','Number','InStock'    # or add whatever headers you like
# get the first column as array of values
$column1 = $data.Stuff
# rotate the array values
switch ($column1.Count) {
    1 { Write-Host "Nothing to do here. There is only one row of data.."; break}
    2 { 
        # swap the values
        $data[0].Stuff,$data[1].Stuff = $data[1].Stuff,$data[0].Stuff
        break
    }
    default {
        $newColumn1 = @($column1[-1]; $column1[0..($column1.Count -2)])
        # re-write the first column in the data
        for ($i = 0; $i -lt $newColumn1.Count; $i++) {
            $data[$i].Stuff = $newColumn1[$i]
        }
    }
}

# output on screen
$data

# output to new CSV file WITH headers
$data | Export-Csv -Path 'D:\your_rotated_data.csv' -NoTypeInformation -Force

# output to new CSV file WITHOUT headers
$data | ConvertTo-Csv -NoTypeInformation | Select-Object -Skip 1 | Set-Content -Path 'D:\your_rotated_data.csv' -Force

Вывод на экран после запуска выглядит следующим образом:

Stuff                   City             Number InStock
-----                   ----             ------ -------
Clothing Free of Charge Chicago Illinois 1      25     
Clothing Rental         Dallas Texas     2      35     
Clothing Purchase       Phoenix Arizona  3      45

, и вы можете видеть все значения в первом столбце («Материал»)было повернуто, то есть последнее значение теперь находится сверху, а остальные значения сместились вниз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...