Powershell Word表单行错误

时间:2014-10-03 14:39:00

标签: powershell ms-word

我有以下功能,我提供3个数组作为变量

$columnHeaders = @('Ticket ID', 'Date Raised', 'Title', 'Status' )
$columnproperties = @('number', 'opened_at', 'short_description', 'state')
$contents 

$ contents有多行数据与上面的列匹配,但有时可能只有1行。当$ contents只有1行时,下面的函数出错并且不打印数据。

使用ISE我将问题追溯到$ contents.count没有显示值,为什么会这样?有没有办法解决它?

function TableOutput ($columnHeaders, $columnProperties, $contents){
    # Number of columns
    $columnCount = $columnHeaders.Count


    # Create a new table
    $docTable = $Word.ActiveDocument.Tables.Add($Word.Selection.Range,$contents.Count,$columnCount)

    # Table style
    $doctable.Style = "Adapt Table"


    # Insert the column headers into the table
    for ($col = 0; $col -lt $columnCount; $col++) {
       $cell = $docTable.Cell(1,$col+1).Range
       $cell.Font.Bold=$true
       $cell.InsertAfter($columnHeaders[$col])
    }
    $doctable.Rows.Add() > Null

    # Load the data into the table
    $i = 1
    $j = $contents.Count
    for($row = 2; $row -lt ($contents.Count + 2); $row++){
        if($row -gt 2){
        }
        for ($col = 1; $col -le $columnCount; $col++){
            Write-Progress -Activity "Processing Table Information" -Status "Adding Row entry $i of $j" -PercentComplete (100*$i/$j)
            $cell = $docTable.Cell($row,$col).Range
            $cell.Font.Name="Calibri"
            $cell.Font.Size="10"
            $cell.Font.Bold=$FALSE
            $cell.Text = $contents[$row-2].($columnProperties[$col-1])
        }
        $i++

    }
    $doctable.Columns.AutoFit()
}

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

将$ content转换为字符串数组,看看这对你是否更好。

function TableOutput ($columnHeaders, $columnProperties, [string[]]$contents){

编辑抱歉,我的不好,您传递的是带有$ columnheaders中描述的属性广告的对象,因此您需要将其转换为对象数组:

function TableOutput ($columnHeaders, $columnProperties, [object[]]$contents){

在我的测试结束时,它可以正常传递给函数的1个对象,以及传递给函数的两个对象的数组。