zoukankan      html  css  js  c++  java
  • c# 操作PPT

    前段时间要做一个把指定图片放到新建的ppt的东西,在网上找了点资料看了一下,发现用C#做好像是最简单的一个,一下是在网上找的一段代码,直接贴进去就能够执行,可是在执行之前一定要加入dll支持:
     项目->加入引用->com->microsoft office object libraty
     项目->加入引用->com->microsoft powerpoint object libraty

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using Microsoft.Office.Core;
    using PowerPoint = Microsoft.Office.Interop.PowerPoint;
    using Graph = Microsoft.Office.Interop.Graph;
    using System.Runtime.InteropServices;

    namespace WindowsApplication1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }

            private void button1_Click(object sender, System.EventArgs e)
            {
                ShowPresentation();
                GC.Collect();
            }

            private void ShowPresentation()
            {
                String strTemplate, strPic;
                strTemplate =
                  "C:\Program Files\Microsoft Office\Templates\Presentation Designs\Blends.pot";
                strPic = "C:\Windows\Blue Lace 16.bmp";
                bool bAssistantOn;

                PowerPoint.Application objApp;
                PowerPoint.Presentations objPresSet;
                PowerPoint._Presentation objPres;
                PowerPoint.Slides objSlides;
                PowerPoint._Slide objSlide;
                PowerPoint.TextRange objTextRng;
                PowerPoint.Shapes objShapes;
                PowerPoint.Shape objShape;
                PowerPoint.SlideShowWindows objSSWs;
                PowerPoint.SlideShowTransition objSST;
                PowerPoint.SlideShowSettings objSSS;
                PowerPoint.SlideRange objSldRng;
                Graph.Chart objChart;

                //Create a new presentation based on a template.
                objApp = new PowerPoint.Application();
                objApp.Visible = MsoTriState.msoTrue;
                objPresSet = objApp.Presentations;
                objPres = objPresSet.Open(strTemplate,
                 MsoTriState.msoFalse, MsoTriState.msoTrue, MsoTriState.msoTrue);
                objSlides = objPres.Slides;

                //Build Slide #1:
                //Add text to the slide, change the font and insert/position a
                //picture on the first slide.
                objSlide = objSlides.Add(1, PowerPoint.PpSlideLayout.ppLayoutTitleOnly);
                objTextRng = objSlide.Shapes[1].TextFrame.TextRange;
                objTextRng.Text = "My Sample Presentation";
                objTextRng.Font.Name = "Comic Sans MS";
                objTextRng.Font.Size = 48;
                objSlide.Shapes.AddPicture(strPic, MsoTriState.msoFalse, MsoTriState.msoTrue,
                 150, 150, 500, 350);

                //Build Slide #2:
                //Add text to the slide title, format the text. Also add a chart to the
                //slide and change the chart type to a 3D pie chart.
                objSlide = objSlides.Add(2, PowerPoint.PpSlideLayout.ppLayoutTitleOnly);
                objTextRng = objSlide.Shapes[1].TextFrame.TextRange;
                objTextRng.Text = "My Chart";
                objTextRng.Font.Name = "Comic Sans MS";
                objTextRng.Font.Size = 48;
                objChart = (Graph.Chart)objSlide.Shapes.AddOLEObject(150, 150, 480, 320,
                 "MSGraph.Chart.8", "", MsoTriState.msoFalse, "", 0, "",
                 MsoTriState.msoFalse).OLEFormat.Object;
                objChart.ChartType = Graph.XlChartType.xl3DPie;
                objChart.Legend.Position = Graph.XlLegendPosition.xlLegendPositionBottom;
                objChart.HasTitle = true;
                objChart.ChartTitle.Text = "Here it is...";

                //Build Slide #3:
                //Change the background color of this slide only. Add a text effect to the slide
                //and apply various color schemes and shadows to the text effect.
                objSlide = objSlides.Add(3, PowerPoint.PpSlideLayout.ppLayoutBlank);
                objSlide.FollowMasterBackground = MsoTriState.msoFalse;
                objShapes = objSlide.Shapes;
                objShape = objShapes.AddTextEffect(MsoPresetTextEffect.msoTextEffect27,
                  "The End", "Impact", 96, MsoTriState.msoFalse, MsoTriState.msoFalse, 230, 200);
               

                // 自己主动播放的代码(開始)
                //Modify the slide show transition settings for all 3 slides in
                //the presentation.
                int[] SlideIdx = new int[3];
                for (int i = 0; i < 3; i++) SlideIdx[i] = i + 1;
                objSldRng = objSlides.Range(SlideIdx);
                objSST = objSldRng.SlideShowTransition;
                objSST.AdvanceOnTime = MsoTriState.msoTrue;
                objSST.AdvanceTime = 3;
                objSST.EntryEffect = PowerPoint.PpEntryEffect.ppEffectBoxOut;

                //Prevent Office Assistant from displaying alert messages:
                bAssistantOn = objApp.Assistant.On;
                objApp.Assistant.On = false;

                //Run the Slide show from slides 1 thru 3.
                objSSS = objPres.SlideShowSettings;
                objSSS.StartingSlide = 1;
                objSSS.EndingSlide = 3;
                objSSS.Run();

                //Wait for the slide show to end.
                objSSWs = objApp.SlideShowWindows;
                while (objSSWs.Count >= 1) System.Threading.Thread.Sleep(100);

                //Reenable Office Assisant, if it was on:
                if (bAssistantOn)
                {
                    objApp.Assistant.On = true;
                    objApp.Assistant.Visible = false;
                }
                // 自己主动播放的代码(结束)

                //Close the presentation without saving changes and quit PowerPoint.
                objPres.Close();
                objApp.Quit();
            }
        }
    }
  • 相关阅读:
    [APIO2014]序列分割
    [HNOI2008]玩具装箱TOY
    [ZJOI2007]时态同步
    [FJOI2014]最短路径树问题
    [IOI2011]Race
    [国家集训队]聪聪可可
    矩阵加速递推
    Codeforces Round #669 题意及思路
    Codeforces Round #670 题意及思路
    Codeforces Round #671 题意及思路
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/4049936.html
Copyright © 2011-2022 走看看