2014-09-01 5 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 в вашей петле? Разве вы не должны увеличивать это значение? –

+0

Спасибо за это, это помогло мне решить вопрос, ответ ниже –

ответ

1

Следующий код решил проблему, в основном я создаю переменную $ Row1 в первом цикле Еогеасп, а затем $ ROW1 ++ на 2-ом цикле Еогеасп, это то помещает данные, как ожидается, ,

#### 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" 
     } 
    } 
} 
Смежные вопросы