本文介绍了在带有office.interop的C#中生成PowerPoint演示文稿图表时出现问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在做一个小的C#
项目,它从Jira
数据创建PowerPoint
演示文稿。该程序运行正常,直到大约2周前出现新错误(此时未更改代码)。
PowerPoint
模板。我要在程序中编辑饼图的数据,最后将演示文稿另存为用户指定的文件夹中的新演示文稿。出现的错误如下:数据在PPT演示文稿中正确显示,模饼图也可以工作。但是,如果右键单击饼图并选择&q;编辑数据&q;,则图表将重置为模板文件中指定的值(名称将重置,值也会更改为&q;1&q;,就像在我的模板中一样)。这是一种明显的新行为(自2周前以来从未发生过)。
我用来编辑饼图后面的数据的代码如下所示:
// using this libraries to acces powerpoint / excel:
using PowerPoint = Microsoft.Office.Interop.PowerPoint;
using Excel = Microsoft.Office.Interop.Excel;
PPTPres.Slides[DiagrammPos[0]].Shapes[DiagrammPos[1]].Chart.ChartData.Activate();
Excel.Workbook ExcelWB = (Excel.Workbook)PPTPres.Slides[DiagrammPos[0]].Shapes[DiagrammPos[1]].Chart.ChartData.Workbook;
Excel.Application ExcelApp = ExcelWB.Application;
ExcelApp.Visible = false;
Excel.Worksheet DiagData = (Excel.Worksheet)ExcelWB.Worksheets[1];
// example how DiagData is used in the programm:
DiagData.Cells[Count, 1].Value = FileSet.GetName();
DiagData.Cells[Count, 2].Value = TimeTotal;
我尝试手动保存Excel工作簿对象,如下所示,但如果尝试执行此操作,则会出现异常:
try
{
ExcelWB.Save();
} catch (Exception e)
{
Console.WriteLine(e.Message);
}
异常是HRESULT:0x800A03EC-异常。看起来是这样的:
以下是PowerPoint
演示文稿中的一些行为截图以供参考:
程序运行后的图表(一切正常):
销毁所有内容的选项屏幕快照:
重置图表截图:
有没有办法防止重置饼图?
编辑:我尝试了多种方法,但都没有结果:
- 在完成所有更改后刷新Diagramm。
- 使用
.close()
方法关闭ExcelWB - Object
- 更改模板(如果我这样做,它将重置为更改后的模板)
- 在将PPT另存为新演示文稿之前保存更改的模板(仍会重置所有内容)
我真的被这个问题困住了。
推荐答案
我发现了如何自己解决此问题:
我的第一个想法(保存Excel
文件)似乎是正确的猜测。但是,.save()
方法不起作用(引发异常)。
ExcelWB.Close(true);
这篇关于在带有office.interop的C#中生成PowerPoint演示文稿图表时出现问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!