Problem with generated PowerPoint Presentation Charts in C# with office.interop(在带有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演示文稿图表时出现问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:在带有office.interop的C#中生成PowerPoint演示文稿图表时出现问题
基础教程推荐
- MS Visual Studio .NET 的替代品 2022-01-01
- 如何在 IDE 中获取 Xamarin Studio C# 输出? 2022-01-01
- 如何激活MC67中的红灯 2022-01-01
- 有没有办法忽略 2GB 文件上传的 maxRequestLength 限制? 2022-01-01
- rabbitmq 的 REST API 2022-01-01
- SSE 浮点算术是否可重现? 2022-01-01
- 将 Office 安装到 Windows 容器 (servercore:ltsc2019) 失败,错误代码为 17002 2022-01-01
- 为什么Flurl.Http DownloadFileAsync/Http客户端GetAsync需要 2022-09-30
- 将 XML 转换为通用列表 2022-01-01
- c# Math.Sqrt 实现 2022-01-01