频道栏目
首页 > 资讯 > C# > 正文

C#操作PowerPoint的方法详情

18-01-15        来源:[db:作者]  
收藏   我要投稿
这里C#操作PowerPoint的基本代码,包括打开ppt文件、读取幻灯页,插入幻灯片,自动播放等
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

{

///



/// PPT文档操作实现类.

///



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===========操作方法==============

///



/// 打开PPT文档并播放显示。

///



///PPT文件路径

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();

}

}

///



/// 自动播放PPT文档.

///



///PPTy文件路径.

///翻页的时间间隔.【以秒为单位】

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();

}

///



/// PPT下一页。

///



public void NextSlide()

{

if (this.objApp != null)

this.objPresSet.SlideShowWindow.View.Next();

}

///



/// PPT上一页。

///



public void PreviousSlide()

{

if (this.objApp != null)

this.objPresSet.SlideShowWindow.View.Previous();

}

///



/// 对当前的PPT页面进行图片插入操作。

///



///图片对象信息数组

///插入图片距离左边长度

///距离比例值

/// 是否添加成功!

public bool InsertToSlide(List 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;

}

///



/// 计算InkCanvas画板上的偏移参数,与PPT上显示图片的参数。

/// 用于PPT加载图片时使用

///



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;

}

}

///



/// 关闭PPT文档。

///



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

}

}

 

相关TAG标签
上一篇:ASP.NET MVC 5 - 创建连接字符串(Connection String)并使用SQL Server LocalDB的讲解
下一篇:C#利用server+data source等方式连接SQL Server数据库详解
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站