суббота, 4 ноября 2017 г.

Формирование HTML из Powershell кода в ISE


Увидел как убого выглядит вставляемый код и поискал способ для формирования расцвеченного HTML кода для вставки в статьи блога. Поскольку я использую Powershell совсем не часто, то функционала стандартного ISE мне выше крыши. Так что первым делом попытался найти способ сделать это из этого инструмента.

Нашёл хорошую статью на wiki technet Wiki: Как вставить отформатированный код сценария PowerShell в TechNet Wiki. Но увы PowerShellPack уже вышел в тираж.

Зато на той же wiki нашёл страницу с дополнениями для самого ISE. Одним из которых был Copy As HTML Add-On. Удобная штука с собственным установщиком. Пришлось правда использовать set-executionpolicy, но это и так пришлось бы делать. Схоронил у себя этот архивчик.

В статью Блогера код вставляется в режиме HTML. И выглядит один-в-один как в редакторе:

$path = "d:\temp\"

$files = Get-ChildItem $path

$excel = New-Object -ComObject Excel.Application
$excel.Visible = $false
$excel.DisplayAlerts = $false

$Summary = @()

foreach ($file in $files) {
     #Открываем каждый из полученных файлов
    $excel.Workbooks.Open($file.fullname) | Out-Null
    
    
    [int] $Year = "20" +$File.name.substring($file.name.Length - 6,2);
    
    [int] $Month = $file.name.substring($file.name.Length - 9,2);
    
    Write-Host "Open file: " $file.FullName "; Year = " $Year "; Month = " $month
    #Получаем перечень с именами листов длиной менее трёх символов - листы с данными по дням имеют имена в два символа
    $Sheets = $excel.worksheets | where {$_.Name.length -lt 3}
    $plan = 0
    $fact = 0
    #Для каждого из полученных листов в файле проводим разбор
    foreach ($Sheet in $Sheets)  {
        [int] $Day = $Sheet.Name
        
        for ($Col = 7; $Col -le 8; $Col++) {
            For ($Row =14; $Row -le 16; $Row++) {
                if ($sheet.cells.item($Row, $Col).Value2 -eq "Койко/мест") {
                    #Write-host $year $Month $Day "-" $Col ":" $Row  = "YES!"
                    #Write-Host "Day = " $Day "; Fact Value = " $sheet.cells.item($Row, $Col + 2).Value2 "; PlanValue = " $sheet.cells.item($Row + 1, $Col + 2).Value2

                    
                    #$DataDay = New-Object PsObject
                    #$DataDay | Add-Member -MemberType noteproperty -Name Year -Value $Year
                    #$DataDay | Add-Member -MemberType noteproperty -Name Month -Value $Month
                    #$DataDay | Add-Member -MemberType noteproperty -Name Day -Value $Day
                    #$DataDay | Add-Member -MemberType noteproperty -Name FactValue -Value $sheet.cells.item($Row, $Col + 2).Value2
                    #$DataDay | Add-Member -MemberType noteproperty -Name PlanValue -Value $sheet.cells.item($Row + 1, $Col + 2).Value2
                    
                    
                    #$Summary += $DataDay
                    $plan +=$sheet.cells.item($Row + 1, $Col + 2).Value2
                    $fact +=$sheet.cells.item($Row, $Col + 2).Value2
                }
            }
        }
    }
                $DateMonth = New-Object PsObject
                    $DateMonth | Add-Member -MemberType noteproperty -Name Year -Value $Year
                    $DateMonth | Add-Member -MemberType noteproperty -Name Month -Value $Month
                    $DateMonth | Add-Member -MemberType noteproperty -Name FactValue -Value $Fact
                    $DateMOnth | Add-Member -MemberType noteproperty -Name PlanValue -Value $Plan
            $Summary += $DateMonth

}
$Summary | Out-GridView

#$table = @()
#   for ($i=2010; $i -le 2011; $i++) {
#        For ($j = 1; $j -le 12; $j++) {
#            $temp = $summary | where {$_.Month = $j} | where {$_.Year = $i}
#            $Fact = 0
#            $Plan = 0
#            foreach ($t in $temp) {
#                $fact += $t.FactValue
#                $plan += $t.PlanValue
#            }
#            
#            $DateMonth = New-Object PsObject
#                    $DataMonth | Add-Member -MemberType noteproperty -Name Year -Value $Year
#                    $DataMonth | Add-Member -MemberType noteproperty -Name Month -Value $Month
#                    $DataMonth | Add-Member -MemberType noteproperty -Name FactValue -Value $Fact
#                    $DataMOnth | Add-Member -MemberType noteproperty -Name PlanValue -Value $Plan
#            $table += $dateMonth
#        }
#    
#    }






Комментариев нет:

Отправить комментарий