C# 保存和自动保存PowerPoint OpenXML PresentationDocuments

C# 保存和自动保存PowerPoint OpenXML PresentationDocuments,c#,powerpoint,openxml,openxml-sdk,powerpoint-2007,C#,Powerpoint,Openxml,Openxml Sdk,Powerpoint 2007,我正在寻找一些关于保存OpenXML文档的建议,特别是一个PresentationDocument 在我的场景中,我直接从磁盘打开一个PowerPoint.pptx演示文稿,它充当模板。然后,我添加(复制)其他各种PowerPoint演示文稿中的幻灯片。对于每个单独的源演示文稿,我还添加了主幻灯片部分和幻灯片部分 问题1: 当演示文稿需要保存时,我是否可以发出一个命令来保存对演示文稿文档的所有更改?或者我必须手动保存每个新的或已更改的项目,例如: presentationDocu

我正在寻找一些关于保存OpenXML文档的建议,特别是一个PresentationDocument

在我的场景中,我直接从磁盘打开一个PowerPoint.pptx演示文稿,它充当模板。然后,我添加(复制)其他各种PowerPoint演示文稿中的幻灯片。对于每个单独的源演示文稿,我还添加了主幻灯片部分和幻灯片部分


问题1: 当演示文稿需要保存时,我是否可以发出一个命令来保存对演示文稿文档的所有更改?或者我必须手动保存每个新的或已更改的项目,例如:

        presentationDocument.PresentationPart.Presentation.Save();

        foreach (var slideMasterPart in presentationDocument.PresentationPart.SlideMasterParts)
        {
            slideMasterPart.SlideMaster.Save();
        }
问题2:打开PresentationDocument时,有一个“autosave”选项,默认为“true”。有人能确切地解释一下autosave的功能吗

我读到的一些东西表明,当PresentationDocument被处理时,这会保存PresentationDocument中的所有内容。这是正确的吗

如果是这样,我需要设置autosave=false,因为我需要控制保存自己,以便能够测试表示构建逻辑

提前感谢您的回答


Steve

问题1:如果您使用streams打开文件并以这种方式进行修改,则无需显式调用这些保存调用中的任何一个。您只需要调用
presentationDocument
变量上的方法。文档中列出了dispose的状态

刷新和保存内容,关闭文档,并释放所有 资源

这将使您不必在演示文稿上调用save,也不必循环浏览每个幻灯片

问题2:文件说明如下:

获取指示是否应在上保存部件的标志 处置


这会让我相信,如果您希望在调用
Dispose()
方法时保存所有部件,那么您希望将此值设置为true。否则,您的更改可能无法保存。

您是在问“自动保存”的工作原理吗?你需要阅读该选项的MSDN描述才能知道该问题的答案。如果你有多个问题,我建议将它们分开。这两个问题都可以通过阅读文档来解决。谢谢你的评论。我花了很多时间搜索MSDN文档,但没有找到这两个相关问题的具体答案,所以我希望这里的人能够帮助我。谢谢阿穆拉。我一直在使用PresentationDocument直接从磁盘打开文件,但正如您所建议的,首先将文件作为流打开,然后将流传递给PresentationDocument是一个更好的主意。这也使得测试更加容易,因为我应该能够通过测试文档进入MemoryStream,而不必进入磁盘。谢谢