Как удалить пустые столбцы и изменить порядок столбцов в нужном порядке в powershell - PullRequest
2 голосов
/ 03 мая 2020

Я получил лист Excel, который получил значения с сервера. Я хочу удалить столбцы, которые не имеют значения. Я сделал это, но в результате имена столбцов таблицы Excel в алфавитном порядке. Но я хочу, чтобы они были в желаемом порядке. Если использовать Select-object для получения желаемого порядка, он снова выдаст удаленные столбцы. Ниже приведен код, который я использовал для удаления пустых столбцов.

$x = Import-Csv YourFile.csv
$f = $x[0] | Get-Member -MemberType NoteProperty | Select name
$f | Add-Member -Name count -Type NoteProperty -Value 0
$f | %{
  $n = $_.Name
  $_.Count = @($x | Select $n -ExpandProperty $n | ? {$_ -ne ''}).count
}
$f = @($f | ? {$_.count -gt 0} | Select Name -expandproperty Name)

$x | Select $f | Export-Csv NewFile.csv -NoTypeInformation

1 Ответ

1 голос
/ 03 мая 2020

Как указывает Аксель Андерсен , Get-Member неизменно возвращает элементы объекта в алфавитном порядке .

Попробуйте следующий подход, который использует .psobject.Properties.Name для получения имена столбцов (свойств) в исходном порядке:

$rows = Import-Csv YourFile.csv
$columnNames = $rows[0].psobject.Properties.Name

$nonEmptyColumnNames = $columnNames.Where({ (@($rows.$_) -ne '').Count -gt 0 })

$rows | Select-Object $nonEmptyColumnNames | Export-Csv NewFile.csv -NoTypeInformation
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...