Csharp调用微软COM转换ppt为HTML

原创 2015年07月10日 15:58:17

使用微软的office中的ppt软件只要使用另存为就可以把一个ppt保存为HTML网页文件。但如何通过程序调用完成转化呢?


以下使用office 2007为例,其他版本略有不同。

 1添加引用,对于不同的版本,有所不一样。当然前提自然是安装了对应的微软office软件。



2转换代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using PPT = Microsoft.Office.Interop.PowerPoint;
using Microsoft.Office.Core;
namespace CommonConvert
{
    public class PPTToHtml
    {
        /// <summary>
        /// 使用反射调用方法,返回生成的HTML文件路径
        /// </summary>
        /// <param name="pptFullFileName"></param>
        /// <returns></returns>
        public string PptToHtmlFile(object pptFullFileName)
        {
            //在此处放置用户代码以初始化页面 
            PPT.Application ppt = new PPT.Application();
            Type wordType = ppt.GetType();
            PPT.Presentations docs = ppt.Presentations;
            //打开文件 
            Type docsType = docs.GetType();
           PPT.Presentation doc = (PPT.Presentation)docsType.InvokeMember("Open", System.Reflection.BindingFlags.InvokeMethod, null, docs, new Object[] { pptFullFileName, false,false,false });
          // PPT.Presentation doc = (PPT.Presentation)docsType.InvokeMember("Open", System.Reflection.BindingFlags.InvokeMethod, null, docs, new Object[] { pptFullFileName});//后三个参数不设置,会出现错误Presentations.Open : Invalid request.  The PowerPoint Frame window does not exist.
            Type docType = doc.GetType();
            string htmlFullFileName = pptFullFileName + ".html"; //HTML文件路径 
            object ofmt = PPT.PpSaveAsFileType.ppSaveAsHTML;
            //转换格式,另存为 
            docType.InvokeMember("SaveAs", System.Reflection.BindingFlags.InvokeMethod, null, doc, new object[] { htmlFullFileName, ofmt });
            docType.InvokeMember("Close", System.Reflection.BindingFlags.InvokeMethod, null, doc, null);
            //退出  
            wordType.InvokeMember("Quit", System.Reflection.BindingFlags.InvokeMethod, null, ppt, null);
            return htmlFullFileName;
        }
        /// <summary>
        /// 直接调用方法,不使用反射
        /// </summary>
        /// <param name="pptFullFileName"></param>
        /// <returns></returns>
        public string PptToHtmlFile2(string pptFullFileName)
        {
            //在此处放置用户代码以初始化页面 
            PPT.Application ppt = new PPT.Application();          
            PPT.Presentations docs = ppt.Presentations;
            //打开文件 
            PPT.Presentation doc = docs.Open(pptFullFileName, MsoTriState.msoFalse, MsoTriState.msoFalse, MsoTriState.msoFalse);
            //  PPT.Presentation doc = docs.Open(pptFullFileName); //后三个参数不设置,会出现错误Presentations.Open : Invalid request.  The PowerPoint Frame window does not exist.
                  
            string htmlFullFileName = pptFullFileName + ".html"; //HTML文件路径 
            //转换格式,另存为      
            doc.SaveAs(htmlFullFileName, PPT.PpSaveAsFileType.ppSaveAsHTML);
            doc.Close();
            //退出           
            ppt.Quit();
            return htmlFullFileName;
        }
    }
}


版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

JAVA通过COM接口操作PPT

一、 背景及要求在Eclipse环境下,开发JAVA代码操作PPT,支持对PPT模板的修改。包括修改文本标签、图表、表格。满足大多数软件生成PPT报告的要求,即先收工创建好模板,在程序中修改模板数据。...

C# office在线预览

最近做office文档(word、ppt、excel)和pdf文件的在线预览效果,有点类似百度文库。后来找到两种可行的办法: 1:将office文档转为swf,然后通过web页面预览...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

C#在线预览文档(word,excel,pdf,txt,png)

C#在线预览文档(word,excel,pdf,txt,png) 1、预览方式:将word文件转换成html文件然后预览html文件 2、预览word文件:需要引入Interop.Micr...

IIS调用COM组件的权限问题

情形1 问题描述 C#.NET编写了一个webservice的接口,供公司的的其他地方发送和接收短信(采用的方式是:再服务器上安装

PrimeSense Grab Detector 编程示例

PrimeSense Grab Detector 编程示例 上篇文章介绍过,PrimeSense 有推出一能检测手部“握拳”(grab)和“松开”(release)动作的函数库G...

网页中播放PPT 幻灯片

方法一、将ppt转换为swf文件,网页文档播放器播放。                 推荐一个将ppt 转换为swf文件的工具 iSpring P...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)