Public/PSWordLists.ps1

function Add-WordList {
    [CmdletBinding()]
    param (
        [Xceed.Words.NET.Container] $WordDocument,
        [Xceed.Words.NET.InsertBeforeOrAfter] $Paragraph,
        [ListItemType]$ListType,
        [string[]] $ListData = $null,
        $Object = $null,
        $Supress = $true
    )
    $LevelPrimary = 0
    $LevelSecondary = 1
    $LevelThird = 2
    if ($ListData -ne $null) {
        $ListCount = ($ListData | Measure-Object).Count
        If ($ListCount -gt 0) {
            $List = $WordDocument.AddList($ListData[0], 0, $ListType)
            Write-Verbose "AddList - Name: $($List.GetType().Name) - BaseType: $($List.GetType().BaseType)"
            for ($i = 1; $i -lt $ListData.Count; $i++ ) {
                $ListItem = $WordDocument.AddListItem($List, $ListData[$i])
                Write-Verbose "AddList - Name: $($ListItem.GetType().Name) - BaseType: $($ListItem.GetType().BaseType)"
            }
            if ($Paragraph -ne $null) {
                $data = $Paragraph.InsertList($List)
            } else {
                $data = $WordDocument.InsertList($List)
            }
        }
    }
    if ($Object -ne $null) {

        $IsFirstTitle = $True
        $Titles = Get-ObjectTitles -Object $Object
        foreach ($Title in $Titles) {
            $Values = Get-ObjectData -Object $Object -Title $Title
            #$Values
            $IsFirstValue = $True
            foreach ($Value in $Values) {
                if ($IsFirstTitle -eq $True) {
                    $List = $WordDocument.AddList($Value, $LevelPrimary, $ListType)
                    Write-Verbose "AddList (Object) - Name: $($List.GetType().Name) - BaseType: $($List.GetType().BaseType)"
                } else {
                    #Write-Color 'Value IsFirstTitle ', $IsFirstTitle, ' Value IsFirstValue ', $IsFirstValue, ' Count ', $Values.Count, ' Value: ', $Value -Color Yellow, Green, Yellow, Green, White, Yellow
                    if ($IsFirstValue -eq $True) {
                        $ListItem = $WordDocument.AddListItem($List, $Value, $LevelPrimary) #> $null
                        Write-Verbose "AddList (Object) - Name: $($ListItem.GetType().Name) - BaseType: $($ListItem.GetType().BaseType)"
                    } else {
                        $ListItem = $WordDocument.AddListItem($List, $Value, $LevelSecondary) # > $null
                        Write-Verbose "AddList (Object) - Name: $($ListItem.GetType().Name) - BaseType: $($ListItem.GetType().BaseType)"
                    }
                }
                $IsFirstTitle = $false
                $IsFirstValue = $false
            }
        }
        if ($Paragraph -ne $null) {
            $data = $Paragraph.InsertList($List)
        } else {
            $data = $WordDocument.InsertList($List) #| Out-Null
        }
    }
    Write-Verbose "AddList - Name: $($data.GetType().Name) - BaseType: $($data.GetType().BaseType)"
    if ($supress -eq $false) {
        return $data
    } else {
        return
    }
}

function Convert-ListToHeadings {
    [CmdletBinding()]
    param(
        [Xceed.Words.NET.Container] $WordDocument,
        $List,
        [alias ("HT")] [HeadingType] $HeadingType = [HeadingType]::Heading1
    )
    $Headings = New-ArrayList
    $List.GetType()
    $Paragraphs = Get-WordParagraphForList $WordDocument $List.NumID
    foreach ($p in $Paragraphs) {
        $p.StyleName = $HeadingType
        Add-ToArray -List $Headings -Element $p
    }
    return $Headings
}