我使用的是 VS2013 Ultimate,带有 Office 2013(已安装 PowerPoint、Excel 和 Word)。我正在用 C# 编码。
我正在使用 C# 创建 PowerPoint 演示文稿。到目前为止,我已经成功地完成了我想做的一切。但是,我在尝试创建图表时遇到问题。我的理解是Excel用于管理数据(在工作表中)。我有以下代码,它将在 PowerPoint 幻灯片中生成包含两个系列的图表。问题是“有时”图表不会添加到幻灯片中。它被添加,工作表出现,数据被修改,图表从幻灯片中消失!我还注意到有 2 个 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();
}
因此,将 Chart.refresh() 放在 Do{} 块中解决了我的问题!多么奇怪!?!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)