Сегодня я только что собрал этот скрипт powershell, который
принимает текстовый файл с разделителями табуляции,
читает это в память,
создает переменное число запросов фильтра на основе различных значений определенного столбца
создает новую пустую книгу Excel
добавляет каждое из подмножеств фильтруемых данных в
новый лист Excel
Последний шаг, где я застрял. В настоящее время мой код помещает несколько строк данных в диапазон на листе в форме развернутых / транспонированных записей «ключ: значение», что приводит к горизонтальному расположению данных. Один и тот же диапазон данных всегда перезаписывается.
Мне нужны данные в виде вертикальной компоновки, то есть данные в столбцах, точно так же, как если бы файл CSV был импортирован с помощью мастера импорта файлов из MS Excel.
Есть ли более простой способ сделать это, чем ниже?
Признаюсь, некоторые функции powershell вставлены сюда в режиме культового культа. Пожалуйста, обратите внимание, что у меня нет опыта PowerShell вообще. Несколько лет назад я написал несколько пакетных файлов, vbscript и vba. Итак, другие критические замечания также приветствуются.
PARAM (
[Parameter(ValueFromPipeline = $true)]
$infile = ".\04-2011\110404-13.txt"
)
PROCESS {
echo " $infile"
Write-Host "Num Args:" $args.Length;
$xl = New-Object -comobject Excel.Application;
$xl.Visible = $true;
$Workbook = $xl.Workbooks.Add();
$content = import-csv -delimiter "`t" $infile ;
$ports = $content | select-object Port# | sort-object Port# -Unique -Descending;
$ports | ForEach-Object {
$p = $_;
Write-Host $p.{Port#};
$Worksheet = $Workbook.Worksheets.Add();
$workSheet.Name = [string]::Format( "{0} {1}", "PortNo" , $p.{Port#});
$filtered = $content | where-object {$_.{Port#} -eq $p.{Port#} };
$filtered | ForEach-Object {
Write-Host $_.{ObsDateTime} , $_.{Port#}
}
$filtered | clip.exe;
$range = $Workbook.ActiveSheet.Range("a2", "a$($filtered.count)");
$Workbook.ActiveSheet.Paste($range, $false);
}
$xl.Quit()
}
Пример вывода данных
НЕВЕРНО
Port# : 1
Obs# : 1
Exp_Flux : 0,99
IV Cdry : 406.96
IV Tcham : 16.19
IV Pressure : 100.7
IV H2O : 9.748
IV V3 : 11.395
IV V4 : 0.759
IV RH : 53.12
RIGHT
Port# Obs# Exp_Flux IV Cdry IV Tcham IV Pressure IV H2O IV V3 IV V4 IV RH
1 1 0,99 406.96 16.19 100.7 9.748 11.395 0.759 53.12