zoukankan      html  css  js  c++  java
  • C# PowerPoint操作的基本用法。

    代码
    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文档操作实现类.
    /// </summary>
    public class OperatePPT
    {
    #region=========基本的参数信息=======
    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)
    {
    //防止连续打开多个PPT程序.
    if (this.objApp != null) { return; }
    try
    {
    objApp = new POWERPOINT.Application();
    //以非只读方式打开,方便操作结束后保存.
    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>
    /// 自动播放PPT文档.
    /// </summary>
    /// <param name="filePath">PPTy文件路径.</param>
    /// <param name="playTime">翻页的时间间隔.【以秒为单位】</param>
    public void PPTAuto(string filePath, int playTime)
    {
    //防止连续打开多个PPT程序.
    if (this.objApp != null) { return; }
    objApp = new POWERPOINT.Application();
    objPresSet = objApp.Presentations.Open(filePath, OFFICECORE.MsoTriState.msoCTrue, OFFICECORE.MsoTriState.msoFalse, OFFICECORE.MsoTriState.msoFalse);
    // 自动播放的代码(开始)
    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;
    //设置翻页的时间.
    objSST.AdvanceOnTime = OFFICECORE.MsoTriState.msoCTrue;
    objSST.AdvanceTime = playTime;
    //翻页时的特效!
    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>
    /// 对当前的PPT页面进行图片插入操作。
    /// </summary>
    /// <param name="alImage">图片对象信息数组</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>
    /// 计算InkCanvas画板上的偏移参数,与PPT上显示图片的参数。
    /// 用于PPT加载图片时使用
    /// </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>
    /// 关闭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
    }
    }

  • 相关阅读:
    HDU4932——二分——Miaomiao's Geometry
    DFS HDOJ 2181 哈密顿绕行世界问题
    Codeforces Round #331 (Div. 2)
    二分+贪心 hihocoder 1249 Xiongnu's Land (15北京A)
    构造 hihocoder 1257 Snake Carpet (15北京I)
    暴力 hihoCoder 1251 Today Is a Rainy Day (15北京C)
    2015北京赛区总结
    Trie UVALive 7192 Chip Factory (15长春J)
    DFS(剪枝) POJ 1724 ROADS
    DFS POJ 2676 Sudoku
  • 原文地址:https://www.cnblogs.com/luozhai714/p/6639960.html
Copyright © 2011-2022 走看看