我有以下功能,我提供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()
}
非常感谢任何帮助。
答案 0 :(得分:1)
将$ content转换为字符串数组,看看这对你是否更好。
function TableOutput ($columnHeaders, $columnProperties, [string[]]$contents){
编辑抱歉,我的不好,您传递的是带有$ columnheaders中描述的属性广告的对象,因此您需要将其转换为对象数组:
function TableOutput ($columnHeaders, $columnProperties, [object[]]$contents){
在我的测试结束时,它可以正常传递给函数的1个对象,以及传递给函数的两个对象的数组。