PowerShell不能添加多个图例条目(系列)到一个Excel图表

我有一个问题添加超过一个系列的excel图表对象通过PowerShell的系列collections这里是我的代码:

[threading.thread]::CurrentThread.CurrentCulture = 'en-US' $excel = New-Object -comobject Excel.Application $workbook = $excel.workbooks.add() $datasheet = $workbook.Worksheets.Item(2) $chartsheet = $workbook.Worksheets.Item(1) [datetime] $startDate = "2012-11-29 00:00:00" [datetime] $finishDate = "2012-12-07 00:00:00" [datetime] $dayCounter = $startDate $startRow = 2 $startColumn = 2 $columnCounter = 2 $rowCounter = 2 while ($dayCounter -le $finishDate) { $datasheet.Cells.Item($rowCounter, $columnCounter) = $dayCounter.ToShortDateString() $datasheet.Cells.Item($rowCounter+1, $columnCounter) = $columnCounter $datasheet.Cells.Item($rowCounter+2, $columnCounter) = 2 * $columnCounter $columnCounter++ $dayCounter = $dayCounter.AddDays(1) } $datasheet.Range($rowCounter.ToString() + ":" + $rowCounter.ToString()).NumberFormat = "m/d/yyyy" $excel.application.DisplayAlerts=$False $chart = $chartsheet.Shapes.addChart().chart $chart.hasTitle = $true $chart.chartTitle.text = "Ramp Example" $chartType = [Microsoft.Office.Interop.Excel.XlChartType]::xlLine $chart.chartType = $chartType $startCell = $datasheet.Cells.Item(3,2).Address($false,$false) $endCell = $datasheet.Cells.Item(3,10).Address($false,$false) $startCell + ", " + $endCell $datarange = $datasheet.Range($startCell, $endCell) $chart.SetSourceData($datarange) $chart.SeriesCollection(1).Name = "First" $chart.SeriesCollection(1).XValues = $datasheet.Range("B2", "J2") $newSeries = $chart.SeriesCollection().NewSeries $chart.SeriesCollection(2).Values = $datasheet.Range("B4", "J4") $chart.SeriesCollection(2).Name = "Second" $chart.SeriesCollection(2).XValues = $datasheet.Range("B2", "J2") $excel.Visible = $True 

错误:

调用带有“1”参数的“SeriesCollection”的exception:“Invalid Parameter”在C:\ localwork \ tfs \ OpenExcel.ps1:49 char:24 + $ chart.SeriesCollection <<<<(2).Values = $ datasheet.Range(“B4”,“J4”)+ CategoryInfo:NotSpecified:(:) [],MethodInvocationException + FullyQualifiedErrorId:ComMethodTargetInvocation

在C:\ localwork \ tfs \ OpenExcel.ps1:50 char:24 + $ chart.SeriesCollection <<<<(2).Name =“参数中调用”SeriesCollection“exception:”Invalid Parameter“第二个“+ CategoryInfo:NotSpecified:(:) [],MethodInvocationException + FullyQualifiedErrorId:ComMethodTargetInvocation

调用“1”参数的“SeriesCollection”exception:“Invalid Parameter”在C:\ localwork \ tfs \ OpenExcel.ps1:51 char:24 + $ chart.SeriesCollection <<<<(2).XValues = $ datasheet.Range(“B2”,“J2”)+ CategoryInfo:NotSpecified:(:) [],MethodInvocationException + FullyQualifiedErrorId:ComMethodTargetInvocation

问题是; 如何通过powershell代码获得额外的进入SeriesCollection?

任何帮助将是明智的

问题解决了,只好在newSeries上调用Invoke(),所以:

 $chart.SeriesCollection().NewSeries.Invoke() 

就是这样,我想和在Excel中创build的macros中调用VBA来开始这个开发有一些区别:

 ActiveSheet.Shapes.AddChart.Select ActiveChart.ChartType = xlLine ActiveChart.SetSourceData Source:=Sheets("Sheet2").Range("B3:P3") ActiveChart.SeriesCollection(1).Name = "=""First""" ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection(2).Values = "=Sheet2!$B$4:$P$4" ActiveChart.SeriesCollection(2).Name = "=""Second""" ActiveChart.SeriesCollection(2).XValues = "=Sheet2!$B$2:$P$2" 

要在PowerShell中调用它,我还没有find一个很好的例子,在WEB上dynamic地添加系列的Excel图表!