ppt-C#能否实现将一个PPT中的一页复制到另一个PPT中?

问题描述

C#能否实现将一个PPT中的一页复制到另一个PPT中?
C#能否实现将一个PPT中的一页复制到另一个PPT中? 不知道有没有什么办法

解决方案

下面是操作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{    /// <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
时间: 2024-11-03 00:21:56

ppt-C#能否实现将一个PPT中的一页复制到另一个PPT中?的相关文章

C#中操作PowerPoint 能不能将一个ppt中的页复制到另一个ppt中

问题描述 C#中操作PowerPoint能不能将一个ppt中的页复制到另一个ppt中不知道有没有这样的方法急求 解决方案 解决方案二:读取写入

sql-将一个数据库中的所有表复制到另一个数据库中

问题描述 将一个数据库中的所有表复制到另一个数据库中 两个数据库不在一个服务器上!!! 比如我本机的ip地址为11.12.13.15 数据库名称为sqljiang 登陆名和密码分别为sa和sa123 服务器的ip为22.33.55.66 数据库名称为sqlfwqsjl 服务器中的数据库是空的 现在我想将本机sqljiang中的所有信息完整复制到服务器中,包括表结构. 表中的数据.视图.存储过程等,如何通过脚本实现. 由于服务器没有这么大的权限,因此不能通过直接还原数据库备份的方法... 解决方案

用NPOI怎么实现把一个表中的一行数据复制到另一个表中的某一行

问题描述 用NPOI怎么实现把一个表中的一行数据复制到另一个表中的某一行,而且不会改变表格中的其他数据 解决方案 解决方案二:你用NPOI读到datatable做处理然后导出呢解决方案三:主要是怎么往一个已有的表格中把取得的数据重载到某一行中解决方案四:那你要定位精准,将读到内存中的数据写入到特定行不就可以了.关于数据,你不是用变量存着的吗?不知道你还有什么问题.解决方案五:读取Excel的内容写到另外一个Excel就行了

android-oracle同一数据库中怎样将一个用户下的表导入或复制到另一个 用户中

问题描述 oracle同一数据库中怎样将一个用户下的表导入或复制到另一个 用户中 ** oracle同一数据库中怎样将一个用户下的表导入或复制到另一个 用户中** 解决方案 oracle把一个用户的表数据复制到另一个用户oracle把一个用户下数据库对象的某个权限赋给另一个用户Oracle当前数据库用户访问另一个用户的表 解决方案二: exp owner=a imp fromuser=a touser=b 解决方案三: exp file=路径 full=y owner=用户1 imp fromu

c#winform项目将一个收银台的销售记录添加到数据库的一个表中

问题描述 c#winform项目将一个收银台的销售记录添加到数据库的一个表中 我是一名大学生,在学习计算机.在做nike项目,遇到一个问题,怎么把收银台的销售记录加入到数据库的另一个表中 .求个位大神指条明路! 解决方案 是不知道如何写向数据库插入记录的语句吗?可以问度娘啊. 如果不是请详细说一下你的问题 解决方案二: 这是一个项目,很难全部解答. 可以细分再询问 C#操作SQL Server数据库:http://www.cnblogs.com/rainman/archive/2012/03/1

ps中怎么把图像中的路径复制到另一个图像中?

  photoshop中将图像中的路径复制到另一个图像中 要在路径选择工具下操作 1.点击文件 新建命令. 2.点击确定. 3.点击确定后 界面会切换到新建的图像文件. 4.鼠标左键点击原来的图像文件标签. 5.点击路径选择工具. 6.鼠标左键在路径内部按下并向上拖动至新建图像标签处停留一秒钟. 7.在按住鼠标停留一秒后会切换到新建图像文件 然后向新建图像文件内部拖动鼠标. 8.将鼠标拖动到新建文件中心位置处松开鼠标 路径复制完毕. 9.切换到原来的图像文件 路径还在. 分类: PS入门教程

java-Java中在同一个类中把一个方法中的数组元素传到另一个方法中,怎么传啊?麻烦大家说一下,谢谢了!

问题描述 Java中在同一个类中把一个方法中的数组元素传到另一个方法中,怎么传啊?麻烦大家说一下,谢谢了! Java中在同一个类中把一个方法中的数组元素传到另一个方法中,怎么传啊?麻烦大家说一下,谢谢了! 麻烦大家了 解决方案 直接作为参数传就是了 void f1() { int[] x = {1,2,3,4,5}; f2(x[1]); } void f2(int n) { } 解决方案二: Spring AOP代理机制以及方法调用在同一个类的另一个方法的问题 解决方案三: 可以使用全局变量的方

代码-html 如何在一个框中输入内容,然后点击按钮将此框中的内容复制到另一个框中

问题描述 html 如何在一个框中输入内容,然后点击按钮将此框中的内容复制到另一个框中 如题所说. 我想在 ""group1currency1"" 里输入一个数据 比如USD,然后点击下面的按钮,将""group1currency1""里的内容复制到"outputcurrency1". 下面是我的代码,我尝试了很多次都不成功, 希望有人能帮助我 <!DOCTYPE html><html&g

oracle 数据库复制到另一个数据库中

问题描述 oracle 数据库复制到另一个数据库中 现有oracle数据库test,要求将test中数据复制一份到test1,请问需要怎么操作,需要数据全部都在 解决方案 数据库导出,再导入test1 就行了 解决方案二: 数据库可视化工具 里面都有复制数据库的功能吧 实在不行 你可以导出表数据 再导入到新库里 解决方案三: 工具里面有导出表,然后在导进去好了 解决方案四: 网上搜一下用数据泵导出数据库 解决方案五: 可视化的工具可以直接进行复制吧.例如:Navicat for Oracle 解