我希望序列化各个PowerPoint幻灯片并将它们保存在磁盘上。目标是稍后访问幻灯片数据并将其添加到其他演示文稿中。对于我们的插件,要保留的幻灯片数量可能会快速增长,出于性能原因,我们宁愿不将它们存储在PowerPoint文件中。
我已经尝试通过在复制幻灯片后从剪贴板获取数据格式“PowerPoint 14.0幻灯片包”来将数据保留在剪贴板中以用于Office 2010-2016。然后我读取文件,将它们设置回剪贴板并将它们粘贴到目标演示文稿的Slides集合中。
但是我无法为Office 2007做这项工作 - 内存中没有“幻灯片包”格式。唯一可以存储幻灯片数据的剪贴板剪辑是“嵌入对象”,但似乎不起作用,因为我无法再次粘贴幻灯片。
有没有办法解决这个问题?我是否错过了更优雅的问题解决方案?
这是我目前在C#中的代码:
public static string PptSlideClipFormat = "PowerPoint 14.0 Slides Package";
public static void serializeSlide(PowerPoint.Slide slide, string filePath)
{
slide.Copy();
var dataObject = Clipboard.GetDataObject();
MemoryStream myStream = (MemoryStream)Clipboard.GetData(PptSlideClipFormat);
IsolatedStorageFileStream fs = new IsolatedStorageFileStream(filePath, FileMode.Create, Utils.Common.isoStore);
try
{
myStream.WriteTo(fs);
}
catch
{
throw new Exception("Failed to serialize slide clipboard data");
}
finally
{
fs.Close();
}
Utils.Common.clearClipboard();
}
[…]
public static void deserializeSlide(string filePath)
{
IsolatedStorageFileStream fs = new IsolatedStorageFileStream(filePath, FileMode.OpenOrCreate, Utils.Common.isoStore);
try
{
Clipboard.SetData(PptSlideClipFormat, fs);
}
catch
{
throw new Exception("Failed to serialize slide clipboard data");
}
finally
{
fs.Close();
}
}