使用C#在Powerpoint 2013中创build多个系列图表

我正在使用VS2013 Ultimate,Office 2013(PowerPoint,Excel和Word都已安装)。 我在C#编码。

我正在使用C#创buildPowerPoint演示文稿。 到目前为止,我已经设法完成了我想要做的一切。 不过,我在尝试创build图表时遇到问题。 我的理解是,Excel用于pipe理数据(在工作表中)。 我有以下代码,这将生成PowerPoint幻灯片中两个系列的图表。 问题是“有时”图表不会被添加到幻灯片中。 它被添加,工作表出现,数据被修改,图表从幻灯片中消失! 我也注意到两个Excel实例启动,但我不明白为什么。 任何人都可以摆脱这个光? 谢谢。

public void CreateChart(PPT.Slide slide) { slide.Layout = PPT.PpSlideLayout.ppLayoutBlank; var chart = slide.Shapes.AddChart(XlChartType.xlLine, 10f, 10f, 900f, 400f).Chart; var workbook = (EXCEL.Workbook)chart.ChartData.Workbook; workbook.Windows.Application.Visible = true; var dataSheet = (EXCEL.Worksheet)workbook.Worksheets[1]; dataSheet.Cells.ClearContents(); dataSheet.Cells.Range["A1"].Value2 = "Bananas"; dataSheet.Cells.Range["A2"].Value2 = "Apples"; dataSheet.Cells.Range["A3"].Value2 = "Pears"; dataSheet.Cells.Range["A4"].Value2 = "Oranges"; dataSheet.Cells.Range["B1"].Value2 = "1000"; dataSheet.Cells.Range["B2"].Value2 = "2500"; dataSheet.Cells.Range["B3"].Value2 = "4000"; dataSheet.Cells.Range["B4"].Value2 = "3000"; var sc = (PPT.SeriesCollection)chart.SeriesCollection(); do { var seriesToDelete = sc.Item(1); seriesToDelete.Delete(); } while (sc.Count != 0); var series1 = sc.NewSeries(); series1.Name = "Pauls Series"; series1.XValues = "'Sheet1'!$A$1:$A$2"; series1.Values = "'Sheet1'!$B$1:$B$2"; series1.ChartType = XlChartType.xlLine; var series2 = sc.NewSeries(); series2.Name = "Seans Series"; series2.XValues = "'Sheet1'!$A$1:$A$2"; series2.Values = "'Sheet1'!$B$3:$B$4"; series2.ChartType = XlChartType.xlLine; chart.HasTitle = true; chart.ChartTitle.Font.Italic = true; chart.ChartTitle.Text = "My First Chart!"; chart.ChartTitle.Font.Size = 12; chart.ChartTitle.Font.Color = Color.Black.ToArgb(); chart.ChartTitle.Format.Line.Visible = Microsoft.Office.Core.MsoTriState.msoTrue; chart.ChartTitle.Format.Line.ForeColor.RGB = Color.Black.ToArgb(); chart.HasLegend = true; chart.Legend.Font.Italic = true; chart.Legend.Font.Size = 10; chart.Refresh(); } 

因此,在Do {}块中放置一个chart.refresh()已经解决了我的问题! 多奇怪!?!