以下是网上找到的代码:

using   Microsoft.Office.Core;   
  using   PowerPoint   =   Microsoft.Office.Interop.PowerPoint;   
  using   Graph   =   Microsoft.Office.Interop.Graph;   
  using   System.Runtime.InteropServices;

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

这是网上找的源码,基本上包括了一些基本的操作。很多属性和事件最好对照找VBA手册来看,当然一看就能看懂那就没必要对照着看了。ppt的VBA手
册网上还是很多下载的,这里就不放了。以下是多一些属性的中文注释,只是为了方便需要的人,不用再去查基本的属性意思。
//以下注释都是对照VBA手册翻译而来掺杂了个人的理解,功能应该有一点出入,实际开发要自己实验一下。

//代表整个 Microsoft PowerPoint 应用程序。Application 对象包括: 
            //1.应用程序范围内的设置和选项(例如,当前打印机的名称) 
            //2.用于返回顶层对象的属性,例如 ActivePresentation、Windows 等
            PowerPoint.Application

//PowerPoint 中所有 Presentation 对象的集合。
            //每个 Presentation 对象代表 PowerPoint 中当前打开的一个演示文稿。
            PowerPoint.Presentations

//代表一个 PowerPoint 演示文稿。
            //Presentation 对象属于 Presentations 集合中的成员。
            //Presentations 集合中包含所有的 Presentation 对象,它们分别代表 PowerPoint 中所有打开的演示文稿。
            PowerPoint._Presentation

//在指定演示文稿中所有 Slide 对象的集合。
            //即一个幻灯片对象
            PowerPoint.Slides

//代表一个幻灯片。Slides 集合包含演示文稿中的所有 Slide 对象            
            ///注意  如果试图返回对单张幻灯片的引用却得到了一个 SlideRange 对象时,请不要奇怪。
            ///单张的幻灯片既可以由 Slide 对象返回也可以由只包含一个对象的 SlideRange 集合返回,
            ///这取决于返回该幻灯片引用的方式。例如,使用 Add 方法创建并返回对幻灯片的引用,
            ///幻灯片由 Slide 对象表示。然而,如果使用 Duplicate 方法创建并返回对幻灯片的引用,
            ///则幻灯片由包含单张幻灯片的 SlideRange 集合表示。
            ///因为应用于 Slide 对象的所有属性和方法也可应用于包含单张幻灯片的 SlideRange 集合,
            ///所以可对返回的幻灯片进行相同的操作,而不管它是由 Slide 对象还是 SlideRange 集合表示。
            PowerPoint._Slide

//包含附加到形状上的文本,以及用于操作文本的属性和方法。
            PowerPoint.TextRange

//指定幻灯片中所有 Shape 对象的集合。每个 Shape 对象代表绘图层中的一个对象,例如自选图形、任意多边形、OLE 对象或图片。
            PowerPoint.Shapes

//代表绘图层中的对象,例如自选图形、任意多边形、OLE 对象或图片。
            PowerPoint.Shape

//代表运行幻灯片放映的窗口。
            PowerPoint.SlideShowWindows

//包含幻灯片放映过程中指定幻灯片切换方式的信息。
            PowerPoint.SlideShowTransition

//代表演示文稿的幻灯片放映设置。
            PowerPoint.SlideShowSettings

//代表备注页或幻灯片范围的集合,该范围是一组幻灯片,少则仅包含一个,多则包含演示文稿中的所有幻灯片。
            //要构造幻灯片范围,可通过从演示文稿中的所有幻灯片或已选择的幻灯片中选择所需的任意幻灯片。
            //例如,可以构造一个 SlideRange 集合,它包含演示文稿中的前三张幻灯片、演示文稿中所有已选择的幻灯片或演示文稿中的所有标             题幻灯片。
            PowerPoint.SlideRange

然后是一些个人开发中遇到的问题,也列出来供参考
    首先是幻灯片的创建方式,例子里的创建方式是从模板创建,此方式只能创建2003自带的模板幻灯片,如果想像2007那样自定义复杂的模板,
2003的模板是无法满足的。2005里的PPT类是microsoft powerpoint 11.0 object libraray。代码中的
objSlides.Add(1, PowerPoint.PpSlideLayout.ppLayoutTitleOnly);PowerPoint.PpSlideLayout的属性包括
        ppLayoutMixed = -2,
        ppLayoutTitle = 1,
        ppLayoutText = 2,
        ppLayoutTwoColumnText = 3,
        ppLayoutTable = 4,
        ppLayoutTextAndChart = 5,
        ppLayoutChartAndText = 6,
        ppLayoutOrgchart = 7,
        ppLayoutChart = 8,
        ppLayoutTextAndClipart = 9,
        ppLayoutClipartAndText = 10,
        ppLayoutTitleOnly = 11,
        ppLayoutBlank = 12,
        ppLayoutTextAndObject = 13,
        ppLayoutObjectAndText = 14,
        ppLayoutLargeObject = 15,
        ppLayoutObject = 16,
        ppLayoutTextAndMediaClip = 17,
        ppLayoutMediaClipAndText = 18,
        ppLayoutObjectOverText = 19,
        ppLayoutTextOverObject = 20,
        ppLayoutTextAndTwoObjects = 21,
        ppLayoutTwoObjectsAndText = 22,
        ppLayoutTwoObjectsOverText = 23,
        ppLayoutFourObjects = 24,
        ppLayoutVerticalText = 25,
        ppLayoutClipArtAndVerticalText = 26,
        ppLayoutVerticalTitleAndText = 27,
        ppLayoutVerticalTitleAndTextOverChart = 28,
        ppLayoutTwoObjects = 29,
        ppLayoutObjectAndTwoObjects = 30,
        ppLayoutTwoObjectsAndObject = 31,
和2003可应用的版式正好31个相符。例子中的方法就是基于模板的方式创建幻灯片。
    因为要做一个复杂模板的DEMO,所以不能用例子中的方式。
    Slides.InsertFromFile("d:\\work\\mode.ppt", 1, 1, 1);
    InsertFromFile方法可从指定演示文稿中的指定幻灯片创建新幻灯片,新幻灯片就相当于目标幻灯片的拷贝,暂时这么理解。这里就叫他为模板
幻灯片吧,模板幻灯片可以按自己的要求做,DEMO中的幻灯片是预留一块图片区域,然后再指定区域插入相应的文本预留区域,用于显示要显示的属
性。
    说着说着再次确认自己语言表达能力确实不行,还是放上源码大家自己看吧。然后再有几点要说的是,
objPres.SaveAs("d:\\work\\asbs.ppt", PpSaveAsFileType.ppSaveAsPresentation, MsoTriState.msoFalse);
的最后一个参数最好得指定为MsoTriState.msoFalse,如果为TRUE的话在文稿保存的时候会顺带一起保存字体,然后文件会很大,保存速度也很慢。
普通模板的时候看不出来差异,但是如果自已做的复杂模板的话,就会在保存的时候卡死,大家可以试试。
    DEMO稍后放上,代码比较杂乱,紧供参考一些基本的PPT操作。
    如有错误的地方请一定指正出来,希望不要误导了有需要的人。还有,DEMO里没有对图片进行加链接的操作,正在测试中。

DEMO:PPT最后的空间用完了……
DEMO的使用只要在D盘下创建一个“WORK”目录,然后把DEMO解压到里面就可以用了,源码是VS2005下开发的。后面就大家自己琢磨那些属性的使用吧。

图片加链接已解决!

转载于:https://www.cnblogs.com/ruanbl/archive/2008/12/01/1344758.html

.net导出为powerpoint的一些参考代码相关推荐

  1. java 如何导出json文件_java导出json格式文件的示例代码

    本文介绍了java导出json格式文件的示例代码,分享给大家,具体如下: import java.io.File; import java.io.FileWriter; import java.io. ...

  2. Java解决Excel导出大批量数据(附上测试代码)

    记录一次项目中使用POI导出Excel报错的修改方案. 参考了作者:happyljw的文章 JAVA使用POI如何导出百万级别数据,对代码进行封装扩展.由于项目时间太紧,并未对写的代码进行严格测试,遇 ...

  3. 2022年美国大学生数学建模竞赛各题型常见参考代码汇总

    美赛A题常见参考代码 美赛B题常见参考代码 美赛C题常见参考代码 美赛D题常见参考代码 美赛E题常见参考代码 美赛F题常见参考代码 代码链接:https://download.csdn.net/dow ...

  4. WinCE下监视设备插拔的参考代码

    在一些项目中,系统需要实时监测U盘或SD卡的插入拔出.当文件系统加载成功后通知特定应用程序,启动自动播放功能.在U盘或其他外部存储设备移除时,也需要立即通知相应的程序,停止访问这些设备,如播放其中的音 ...

  5. 《计算机操作系统》大作业【参考代码解读】

    注:前言.目录见 https://blog.csdn.net/qq_44220418/article/details/108428971 文章目录 零.前言 一.类型定义 CurPath FCB Un ...

  6. python京东预约抢购_Python参考代码:京东抢券脚本

    一.参数获取 要实现发送请求抢券,需要获取券的URL,并定制请求头Request Headers,下面所有参数都来自Chrome的开发者工具.大多浏览器都有开发者工具,可以按需选择. 准备步骤:登录网 ...

  7. 使用动态规划求解算法问题的五大特点总结(附基于Python的参考代码)

    什么样的问题应使用动态规划求解 前言 一.求"最"优解问题(最大值和最小值) 1. 乘积最大子数组 问题描述 示例 题目分析 参考代码 2. 最长回文子串 问题描述 示例 题目分析 ...

  8. Java代码安装maven jar_Java中Maven项目导出jar包配置的示例代码

    具体代码如下所示: src/main/java src/main/resources ${project.build.directory} **/*.java src/test/java src/te ...

  9. C++ Primer Plus课后编程练习第6章参考代码

    (C++ Primer Plus课后编程练习第6章参考代码) 声明: 作者入门小白,将学习过程中的代码做一些分享,仅供大家参考,欢迎大家交流指正.全部编译运行过,水平有限,不喜勿喷. 环境: Wind ...

最新文章

  1. 一次打流过程的优化反思(iperf3的灵活运用)
  2. mysql update操作
  3. PostgreSQL 10.1 手册_部分 III. 服务器管理_第 32 章 回归测试_32.5. 测试覆盖检查
  4. redis维护问题总结
  5. 下篇 | 说说无锁(Lock-Free)编程那些事(下)
  6. 指令重排序所带来的问题及使用volatile关键字解决问题
  7. Panoptic Segmentation论文笔记
  8. 中国巨头竞相复制Clubhouse:一场无关输赢的竞赛
  9. 站点信息 统计 内容 概况
  10. node 修改文件自启动
  11. 给新手开店选品的建议
  12. 计算机审计 报告哦,计算机审计实训报告
  13. 程序设计语言与语言程序处理程序基础(软件设计师备考笔记)
  14. git 某个文件回退到指定版本
  15. 总结100+前端优质库,让你成为前端百事通
  16. linux sh文件执行情况,Linux下SH执行
  17. js,javascript中判断一个数是否是素数
  18. 使用PHP提取视频网站页面中的FLASH地址
  19. 深度学习中的BN_CBN_CmBN
  20. Maven——简介、下载安装与配置

热门文章

  1. 垄断者 Google Chrome 若被迫分拆,谁将会接盘?
  2. 智能合约最佳实践 之 Solidity 编码规范
  3. solidity之以太币支付
  4. sql server分页_SQL Server中的分页简介
  5. 了解SQL Server中的GUID数据类型
  6. ssma5.3_使用SSMA v7.1 for Oracle迁移到SQL Server
  7. tde数据库加密_如何在TDE加密的数据库上配置SQL Server镜像
  8. sql server端口_SQL Server端口概述
  9. C++ Template 使用简介
  10. 构建Electron的常见问题(Mac)