2014-09-01 31 views
0

我一直在研究一个自动化的Word文档,并遇到了一个foreach查询问题,我无法正确输出。我有以下数据:PowerShell和MS Word 2013图表,ForEach

Date,  server 1, server 2, server 8, server 12 
19/08/2014, 4.24,  5.8,  2.05,  1.0 
20/08/2014, 6.4,  3.8,  5.05,  2.1 

但是我的脚本保持输出它:

Date,  server 1, server 2, server 8, server 12 
20/08/2014, 6.4,  3.8,  5.05,  2.1 

基本上第一线得到由后续的行覆盖,那么只有最后一行是存在的。

请参阅下面我的代码:

#### Create Word Document #### 

$word = New-Object -ComObject word.application 
$word.visible = $true 
$doc = $word.documents.add() 
$selection = $word.selection 
$nl = [Environment]::NewLine 

# Create a new chart 
$docChart = $Word.ActiveDocument.InlineShapes.AddChart() 
$docChart.Chart.Type = "1" 
$docChart.chart.SubType = "2" 
$docChart.Chart.ChartStyle = "2" 
$docChart.Chart.Legend.AutoScaleFont = "true" 
$docChart.Chart.HasTitle = "True" 
$docChart.Chart.ChartTitle.Formula = "VM Memory Consumption" 

$cells = $docChart.chart.ChartData.Workbook.ActiveSheet.cells 

$columns = $MyData | Get-Member -MemberType Properties | Select Name 

foreach($column in $columns){ 
    $row=1 
    $col++ 

    $column2 = $column.Name 
    $cells.Item($Row,$col) = "$column2" 

    $MyData | ForEach-Object{ 
     $Row1=2 
     $col 
     $date = $_.c3 
     $array = ($_ | Select-Object $Column2)."$Column2" 

     $Array | ForEach-Object{ 

      $cells.Item($row1,$col) = "$array" 
     } 
    } 
} 

我真的很感激一些帮助解决这一点。

感谢, 史蒂夫

+1

$ Row1 = 2在你的循环中?你不应该增加这个价值吗? – 2014-09-02 06:42:55

+0

感谢您的支持,它帮助我解决了下面的问题 – 2014-09-02 07:56:41

回答

1

下面的代码解决了我的问题,基本上我创建二号foreach循环的第一个foreach循环的$ ROW1变量,然后$ ROW1 ++,这则使该数据符合预期。

#### Create Word Document #### 

$word = New-Object -ComObject word.application 
$word.visible = $true 
$doc = $word.documents.add() 
$selection = $word.selection 
$nl = [Environment]::NewLine 

# Create a new chart 
$docChart = $Word.ActiveDocument.InlineShapes.AddChart() 
$docChart.Chart.Type = "1" 
$docChart.chart.SubType = "2" 
$docChart.Chart.ChartStyle = "276" 
$docChart.Chart.Legend.AutoScaleFont = "true" 
$docChart.Chart.HasTitle = "True" 
$docChart.Chart.ChartTitle.Formula = "VM Memory Consumption" 
$docChart.chart.Legend.Position = "-4107" 

$cells = $docChart.chart.ChartData.Workbook.ActiveSheet.cells 

$columns = $MyData | Get-Member -MemberType Properties | Select Name 

foreach($column in $columns){ 
    $row=1 
    $col++ 
    $row1=1 
    $column2 = $column.Name 
    $cells.Item($Row,$col) = "$column2" 

    $MyData | ForEach-Object{ 
     $row1++ 
     $date = $_.c3 
     $array = ($_ | Select-Object $Column2)."$Column2" 

     $Array | ForEach-Object{ 
      $cells.Item($row1,$col) = "$array" 
     } 
    } 
}