从C#中的资源中提取并打开PPT

时间:2012-02-20 12:53:51

标签: c# .net resources powerpoint

我想在PowerPoint查看器中查看演示文稿,ppt文件在资源中。所以问题是我如何访问它并在PowerPoint查看器中查看。

以下是示例代码

Process.Start(@"C:\Program Files\Microsoft Office\Office12\PPTVIEW.exe",**@"e:\presentation.ppt")**;

如何通过包含资源的ppt替换此路径?

1 个答案:

答案 0 :(得分:3)

实际上,你要求的是一个共同的模式,这里有一些相关的问题和答案。

基本上你通常做的是:

  1. 找到有问题的资源并打开资源流。
  2. 如果目标API无法直接处理流或字节数组,请将流保存到(临时)文件中。
  3. 对文件执行任何操作或直接对流/字节数组执行操作(如我所说,如果支持)。
  4. 最终从步骤1中删除临时文件(如果有)。
  5. 所以,你首先要提取PPT文件(实际上它并不重要,它是一个PPT文件,可以通过任何文件或字节blob)。

    string tempFile = Path.GetTempFileName();
    
    using (Stream input = assembly.GetManifestResourceStream("MyPresentation.PPT"))
    using (Stream output = File.Create(tempFile))
    {
       input.CopyTo(output); // Stream.CopyTo() is new in .NET 4.0, used for simplicity and illustration purposes.
    }
    

    然后使用Process.Start()打开它。您无需指定Powerpoint可执行文件的路径,因为PPT应该是PowerPoint或PowerPoint Viewer的注册文件扩展名。如果已同时安装,则可能仍希望提供相关可执行文件的路径以防止启动错误的应用程序。确保你没有硬编码路径,但尝试从注册表中检索它(或类似的,我没有检查,因为现在太具体了)。

    using (var process = Process.Start(tempFile))
    {
       process.WaitForExit();
       // remove temporary file after use
       File.Delete(tempFile);
    }
    

    注意:我遗漏了一些您可能想要在实际应用程序中添加的错误处理。