В общем, преобразовать строки массива PowerShell в столбцы

На SO есть довольно много сообщений, которые касаются транспозиции PowerShell. Тем не менее, большая часть кода относится к случаю использования или адресует данные, собираемые из файла text / CSV, и не делает мне ничего хорошего. Я бы хотел увидеть решение, которое может выполнять эту работу без такой специфики и работать с массивами непосредственно в PS.

Пример данных:

Customer Name: SomeCompany Abbreviation: SC Company Contact: Some Person Address: 123 Anywhere St. ClientID: XXXX 

Эти данные намного сложнее, но я могу работать с ним, используя другие методы, если я могу просто заставить строки и столбцы сотрудничать. Элементы массива, которые «Name:» и «SomeCompany» являются заголовками столбцов. Это побочный результат того, как данные собираются и не могут быть изменены. Я импортирую данные из таблицы Excel с помощью PSExcel, и формат электронной таблицы не является изменяемым.

Желаемый результат:

 Customer Name:, Abbreviation:, Company Contact:, Address:, ClientID: SomeCompany, SC, Some Person, 123 Anywhere St., XXXX 

Пример того, что я пробовал:

 $CustInfo = Import-XLSX -Path "SomePath" -Sheet "SomeSheet" -RowStart 3 -ColumnStart 2 $b = @() foreach ($Property in $CustInfo.Property | Select -Unique) { $Props = [ordered]@{ Property = $Property } foreach ($item in $CustInfo."Customer Name:" | Select -Unique){ $Value = ($CustInfo.where({ $_."Customer Name:" -eq $item -and $_.Property -eq $Property })).Value $Props += @{ $item = $Value } } $b += New-Object -TypeName PSObject -Property $Props } 

Это не работает из-за «других» данных, о которых я упоминал. В этой конкретной книге есть много других разделов, поэтому «Select -Unique» выходит из строя без ошибок, а вывод пуст. Если бы я мог ограничить ввод, чтобы выбрать только те строки / столбцы, которые мне нужны, это может привести к выстрелу. Похоже, что, хотя в Import-XLSX есть «RowStart» и «ColumnStart», нет никаких свойств для остановки одного из них.

Я пробовал методы из вышеуказанных связанных вопросов SO, но, как я уже сказал, они либо слишком специфичны для данных вопроса, либо применяются для импорта CSV-файлов и не работают с массивами.

Я смог решить это, выполнив две вещи:

  1. Удалены дополнительные столбцы, используя переключатель «-Header» в функции «Импорт-XLSX», чтобы добавить поддельные имена заголовков, а затем выбрать только те заголовки.

     $CustInfo = Import-XLSX -Path "SomePath" -Sheet "SomeSheet" -RowStart 2 -ColumnStart 2 -Header 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18 | Select "1","2" 

Недостатком этого является то, что я должен был знать, сколько столбцов содержали входные данные – не динамические. Если кто-то может решить проблему, я был бы благодарен.

  1. Перевернул столбцы и заголовки простой петлей foreach:

     $obj = [PSCustomObject]@{} ForEach ($item in $CustInfo) { $value = $null $name = $null if ($item."2") { [string]$value = $item."2" } if ($item."1") { [string]$name = $item."1" } if ($value -and $name) { $obj | Add-Member -NotePropertyName $name -NotePropertyValue $value } } 

Мне пришлось форматировать строковый тип в именах и значениях свойств, потому что почтовые индексы и CustID форматировались как Int32. В противном случае это делает то, что мне нужно.

  • Вывод цикла скрипта Powershell в txt-файл
  • Объект возврата функции не экспортируется в Excel в PowerShell
  • Ячейки Excel Powershell не окрашены, как ожидалось
  • Powershell конвертирует IP в разрешенный DNS - экспорт в Excel
  • сохранять как «правильные» цитаты csv / delete из CSV, за исключением того, где существует запятая
  • Как вставить формулу Excel с помощью PowerShell?
  • Поиск определенного имени в excel с использованием Powershell (с использованием петель или нет)
  • PowerShell - последний сохраненный файл - хотите сузить до последних 7 дней
  • Программное удаление «Число в этой ячейке форматируется как текст или предшествует апострофе» в Excel
  • Почему я не могу создать эту диаграмму в excel (используя powershell)
  • Преобразование нескольких xls в csv с помощью powershell
  • Interesting Posts

    Вопрос VBA с упрощенным поворотом

    Нужна помощь с макросом Excel для организации опробованного опроса

    Предотвращать попадание настраиваемых баров ошибок в отрицательные значения

    VBA – динамическая привязка рабочего листа

    Поддержка фрагментарного Unicode Excel – может ли он измениться?

    Как включить воскресенье как часть этой недели в условном форматировании?

    Как сделать excel interop на windows 2008?

    Разделить api responseetext на столбцы и строки, остановиться после определенной суммы

    Добавить изображение на лист Excel с Delphi 6

    Сумма нескольких столбцов, если они совпадают

    Чтение / запись листа Excel в реальном времени в C #

    Как правильно разобрать текстовые числа, разделенные смешанными запятыми и точками в файле excel, используя Python?

    Yii – Импорт / Экспорт Excel

    Использование Sheets.Add, ошибка с использованием параметра After, «Ожидаемое заявление»,

    Pandas Excel Объединенная ячейка Parsing переименования Безымянный Колонка

    Давайте будем гением компьютера.