最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#操作PowerPoint的方法

 更新時(shí)間:2015年04月01日 12:28:47   作者:重負(fù)在身  
這篇文章主要介紹了C#操作PowerPoint的方法,涉及C#針對(duì)PowerPoint的打開、讀取、播放等技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下

本文實(shí)例講述了C#操作PowerPoint的方法。分享給大家供大家參考。具體如下:

這里C#操作PowerPoint的基本代碼,包括打開ppt文件、讀取幻燈頁,插入幻燈片,自動(dòng)播放等

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using OFFICECORE = Microsoft.Office.Core;
using POWERPOINT = Microsoft.Office.Interop.PowerPoint;
using System.Windows;
using System.Collections;
using System.Windows.Controls;
namespace PPTDraw.PPTOperate
{
  /// <summary>
  /// PPT文檔操作實(shí)現(xiàn)類.
  /// </summary>
  public class OperatePPT
  {
    #region=========基本的參數(shù)信息=======
    POWERPOINT.Application objApp = null;
    POWERPOINT.Presentation objPresSet = null;
    POWERPOINT.SlideShowWindows objSSWs;
    POWERPOINT.SlideShowTransition objSST;
    POWERPOINT.SlideShowSettings objSSS;
    POWERPOINT.SlideRange objSldRng;
    bool bAssistantOn;
    double pixperPoint = 0;
    double offsetx = 0;
    double offsety = 0;
    #endregion
    #region===========操作方法==============
    /// <summary>
    /// 打開PPT文檔并播放顯示。
    /// </summary>
    /// <param name="filePath">PPT文件路徑</param>
    public void PPTOpen(string filePath)
    {
      //防止連續(xù)打開多個(gè)PPT程序.
      if (this.objApp != null) { return; }
      try
      {
        objApp = new POWERPOINT.Application();
        //以非只讀方式打開,方便操作結(jié)束后保存.
        objPresSet = objApp.Presentations.Open(filePath, OFFICECORE.MsoTriState.msoFalse, OFFICECORE.MsoTriState.msoFalse, OFFICECORE.MsoTriState.msoFalse);
        //Prevent Office Assistant from displaying alert messages:
        bAssistantOn = objApp.Assistant.On;
        objApp.Assistant.On = false;
        objSSS = this.objPresSet.SlideShowSettings;
        objSSS.Run();
      }
      catch (Exception ex)
      {
        this.objApp.Quit();
      }
    }
    /// <summary>
    /// 自動(dòng)播放PPT文檔.
    /// </summary>
    /// <param name="filePath">PPTy文件路徑.</param>
    /// <param name="playTime">翻頁的時(shí)間間隔.【以秒為單位】</param>
    public void PPTAuto(string filePath, int playTime)
    {
      //防止連續(xù)打開多個(gè)PPT程序.
      if (this.objApp != null) { return; }
      objApp = new POWERPOINT.Application();
      objPresSet = objApp.Presentations.Open(filePath, OFFICECORE.MsoTriState.msoCTrue, OFFICECORE.MsoTriState.msoFalse, OFFICECORE.MsoTriState.msoFalse);
      // 自動(dòng)播放的代碼(開始)
      int Slides = objPresSet.Slides.Count;
      int[] SlideIdx = new int[Slides];
      for (int i = 0; i < Slides; i++) { SlideIdx[i] = i + 1; };
      objSldRng = objPresSet.Slides.Range(SlideIdx);
      objSST = objSldRng.SlideShowTransition;
      //設(shè)置翻頁的時(shí)間.
      objSST.AdvanceOnTime = OFFICECORE.MsoTriState.msoCTrue;
      objSST.AdvanceTime = playTime;
      //翻頁時(shí)的特效!
      objSST.EntryEffect = POWERPOINT.PpEntryEffect.ppEffectCircleOut;
      //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 = objPresSet.SlideShowSettings;
      objSSS.StartingSlide = 1;
      objSSS.EndingSlide = Slides;
      objSSS.Run();
      //Wait for the slide show to end.
      objSSWs = objApp.SlideShowWindows;
      while (objSSWs.Count >= 1) System.Threading.Thread.Sleep(playTime * 100);
      this.objPresSet.Close();
      this.objApp.Quit();
    }
    /// <summary>
    /// PPT下一頁。
    /// </summary>
    public void NextSlide()
    {
      if (this.objApp != null)
        this.objPresSet.SlideShowWindow.View.Next();
    }
    /// <summary>
    /// PPT上一頁。
    /// </summary>
    public void PreviousSlide()
    {
      if (this.objApp != null)
        this.objPresSet.SlideShowWindow.View.Previous();
    }
    /// <summary>
    /// 對(duì)當(dāng)前的PPT頁面進(jìn)行圖片插入操作。
    /// </summary>
    /// <param name="alImage">圖片對(duì)象信息數(shù)組</param>
    /// <param name="offsetx">插入圖片距離左邊長度</param>
    /// <param name="pixperPoint">距離比例值</param>
    /// <returns>是否添加成功!</returns>
    public bool InsertToSlide(List<PPTOBJ> listObj)
    {
      bool InsertSlide = false;
      if (this.objPresSet != null)
      {
        this.SlideParams();
        int slipeint = objPresSet.SlideShowWindow.View.CurrentShowPosition;
        foreach (PPTOBJ myobj in listObj)
        {
          objPresSet.Slides[slipeint].Shapes.AddPicture(
             myobj.Path,      //圖片路徑
             OFFICECORE.MsoTriState.msoFalse,
             OFFICECORE.MsoTriState.msoTrue,
             (float)((myobj.X - this.offsetx) / this.pixperPoint),    //插入圖片距離左邊長度
             (float)(myobj.Y / this.pixperPoint),    //插入圖片距離頂部高度
             (float)(myobj.Width / this.pixperPoint),  //插入圖片的寬度
             (float)(myobj.Height / this.pixperPoint)  //插入圖片的高度
           );
        }
        InsertSlide = true;
      }
      return InsertSlide;
    }
    /// <summary>
    /// 計(jì)算InkCanvas畫板上的偏移參數(shù),與PPT上顯示圖片的參數(shù)。
    /// 用于PPT加載圖片時(shí)使用
    /// </summary>
    private void SlideParams()
    {
      double slideWidth = this.objPresSet.PageSetup.SlideWidth;
      double slideHeight = this.objPresSet.PageSetup.SlideHeight;
      double inkCanWidth = SystemParameters.PrimaryScreenWidth;//inkCan.ActualWidth;
      double inkCanHeight = SystemParameters.PrimaryScreenHeight;//inkCan.ActualHeight ;
      if ((slideWidth / slideHeight) > (inkCanWidth / inkCanHeight))
      {
        this.pixperPoint = inkCanHeight / slideHeight;
        this.offsetx = 0;
        this.offsety = (inkCanHeight - slideHeight * this.pixperPoint) / 2;
      }
      else
      {
        this.pixperPoint = inkCanHeight / slideHeight;
        this.offsety = 0;
        this.offsetx = (inkCanWidth - slideWidth * this.pixperPoint) / 2;
      }
    }
    /// <summary>
    /// 關(guān)閉PPT文檔。
    /// </summary>
    public void PPTClose()
    {
      //裝備PPT程序。
      if (this.objPresSet != null)
      {
        //判斷是否退出程序,可以不使用。
        //objSSWs = objApp.SlideShowWindows;
        //if (objSSWs.Count >= 1)
        //{
          if (MessageBox.Show("是否保存修改的筆跡!", "提示", MessageBoxButton.OKCancel) == MessageBoxResult.OK)
            this.objPresSet.Save();
        //}
        //this.objPresSet.Close();
      }
      if (this.objApp != null)
        this.objApp.Quit();
      GC.Collect();
    }
    #endregion
  }
}

希望本文所述對(duì)大家的C#程序設(shè)計(jì)有所幫助。

相關(guān)文章

最新評(píng)論

漳平市| 章丘市| 饶阳县| 大方县| 乌海市| 望谟县| 长葛市| 宜君县| 闵行区| 济源市| 南召县| 天镇县| 武邑县| 茶陵县| 普兰店市| 梅河口市| 扶余县| 余姚市| 左贡县| 嘉禾县| 麻阳| 武威市| 阿瓦提县| 读书| 丘北县| 涿鹿县| 田东县| 尉犁县| 阿拉善右旗| 郸城县| 平武县| 五大连池市| 嵩明县| 郯城县| 长沙市| 登封市| 厦门市| 皋兰县| 大同市| 肇源县| 定西市|