最近需要做一个自动生成PPT的程序一天头绪都没有。。
网上搜到那些也看不太懂

解决方案 »

  1.   

    用微软提供的dll,一般在vs的安装目录下,比如
    D:\Program Files\Microsoft Visual Studio 10.0\Visual Studio Tools for Office\PIA\Office12里面有关于office操作的dll,ppt的是
    Microsoft.Office.Interop.PowerPoint.dll
      

  2.   

    http://support.microsoft.com/kb/303718/zh-cn
      

  3.   

    2008-09-09 15:33 c# 生成ppt using System;
    using Microsoft.Office.Core;
    using PowerPoint = Microsoft.Office.Interop.PowerPoint;
    using Graph = Microsoft.Office.Interop.Graph;
    using System.Runtime.InteropServices;namespace ExportPPT
    {
    /// <summary>
    /// Summary description for OperatePPT.
    /// </summary>
    public class OperatePPT
    {   public OperatePPT()
       {
        //
        // TODO: Add constructor logic here
        //
       }   public static void InsertText(PowerPoint._Slide slide,string text,float left,float top,float width,float height)
       {
        PowerPoint.Shape shape = slide.Shapes.AddTextbox(Microsoft.Office.Core.MsoTextOrientation.msoTextOrientationHorizontal,left,top,width,height);
        PowerPoint.TextRange textRng = shape.TextFrame.TextRange;
        textRng.Text = text; 
       }   public static void InsertPicture(PowerPoint._Slide slide,string fileName,float left,float top,float width,float height)
       {
        slide.Shapes.AddPicture(fileName,Microsoft.Office.Core.MsoTriState.msoFalse,Microsoft.Office.Core.MsoTriState.msoTrue,left,top,width,height);
       }   public static void SetCanvas(PowerPoint._Slide slide,float left,float top,float width,float height)
       {
        slide.Shapes.AddCanvas(left,top,width,height);
       }   public static void InsertMedia(PowerPoint._Slide slide,string fileName,float left,float top,float width,float height)
       {
        PowerPoint.Shape shape = slide.Shapes.AddMediaObject(fileName,left,top,width,height);
        PowerPoint.AnimationSettings mediaSettings = shape.AnimationSettings;
        PowerPoint.PlaySettings oPlaySettings = mediaSettings.PlaySettings;
        oPlaySettings.PlayOnEntry = Microsoft.Office.Core.MsoTriState.msoTrue;
       
       
       
       }   public static void InsertFlash(PowerPoint._Slide slide,string fileName,float left,float top,float width,float height)
       {
        ShockwaveFlashObjects.ShockwaveFlashClass flash =
        (ShockwaveFlashObjects.ShockwaveFlashClass) slide.Shapes.AddOLEObject(left,top,width, height,"ShockwaveFlash.ShockwaveFlash.9", "", MsoTriState.msoFalse, "", 0,"", MsoTriState.msoFalse).OLEFormat.Object;
        flash.Movie = fileName;
       
       }   public static void Test()
       {
        PowerPoint.Application application;
        PowerPoint.Presentations presentations;
        PowerPoint._Presentation presentation;
        PowerPoint.Slides slides;
        PowerPoint._Slide slide;
        PowerPoint.SlideRange objSldRng;
        PowerPoint.SlideShowSettings objSSS;
        PowerPoint.SlideShowTransition objSST;
        PowerPoint.SlideShowWindows objSSWs;    //create application
        application = new PowerPoint.ApplicationClass();
        application.Visible = MsoTriState.msoTrue;
        presentations = application.Presentations;
        presentation = presentations.Add(Microsoft.Office.Core.MsoTriState.msoTrue);
        //add first silde
        slides = presentation.Slides;
        slide = slides.Add(1,Microsoft.Office.Interop.PowerPoint.PpSlideLayout.ppLayoutTitleOnly);
        //InsertText(slide,"Hello World",0,0,200,200);
        //InsertPicture(slide,@"C:\pic.jpg",0,200,300,200);
        InsertFlash(slide,@"C:\xiyou.swf",0,0,200,200);
        //InsertMedia(slide,@"c:\bjhyn.wmv",200,200,200,200);
        int[] SlideIdx = new int[1];
        for(int i=0;i<1;i++) SlideIdx[i]=i+1;
        objSldRng = slides.Range(SlideIdx);
        objSST = objSldRng.SlideShowTransition;
        objSST.AdvanceOnTime = MsoTriState.msoTrue;
        objSST.AdvanceTime = 3;
        objSST.EntryEffect = PowerPoint.PpEntryEffect.ppEffectBoxOut;    //Prevent Office Assistant from displaying alert messages:
        bool bAssistantOn = application.Assistant.On;
        application.Assistant.On = false;    //Run the Slide show.
        objSSS = presentation.SlideShowSettings;
        objSSS.StartingSlide = 1;
        objSSS.EndingSlide = 1;
        objSSS.Run();
           //Wait for the slide show to end.
        objSSWs = application.SlideShowWindows;
        while(objSSWs.Count>=1) System.Threading.Thread.Sleep(1000);    //Reenable Office Assisant, if it was on:
        if(bAssistantOn)
        {
         application.Assistant.On = true;
         application.Assistant.Visible = false;
        }    //Close the presentation without saving changes and quit PowerPoint.
        presentation.SaveAs(@"c:\fang.ppt",PowerPoint.PpSaveAsFileType.ppSaveAsDefault,Microsoft.Office.Core.MsoTriState.msoTrue);
        presentation.Close();
        application.Quit();   }
    }
    }