使用 office.interop 在 C# 中生成的 PowerPoint 演示文稿图表存在问题

Problem with generated PowerPoint Presentation Charts in C# with office.interop

我正在做一个小型 C# 项目,该项目根据 Jira 数据创建 PowerPoint 演示文稿。该程序运行良好,直到大约 2 周前出现了一个新错误(这次没有更改编码)。

我正在做的是:我有一个带有饼图的 PowerPoint 模板。我想在我的程序中编辑饼图的数据,最后我将演示文稿另存为用户指定的文件夹中的新演示文稿。

发生的错误如下:数据在PPT演示文稿中正确显示,饼图也有效。但是,如果您右键单击饼图并 select“编辑数据”,饼图将重置为模板文件中指定的值(名称将重置并且值也更改为“1”,就像在我的模板中一样).这是一个明显的新行为(自 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 演示文稿中行为的一些屏幕截图:

程序后的图表运行(一切看起来都不错):

选项的屏幕截图,破坏一切:

重置图表截图:

有没有办法防止饼图被重置?

编辑: 我尝试了多种方法,但没有任何效果:

我真的被这个问题困住了。

我找到了自己解决这个问题的方法:

我的第一个想法(保存 Excel 文件)似乎是正确的猜测。但是,.save() 方法不起作用(抛出异常)。

诀窍是:您可以使用另一种工作正常的方法进行保存,关闭 excel 文件的方法有一个布尔值,如果设置为 true,则保存所有更改。 我需要做的就是在我的文件中添加以下内容:

ExcelWB.Close(true);

谢谢 mirco 你的解决方案有效,我几天前发布了同样的问题: Powerpoint chart data not saved