php 将ppt转html,C#实现将PPT转换成HTML的方法

本文是一个C#的小程序,主要实现将ppt转换成html的功能,方法很多,此处与大家分享一下,希望能对大家的项目开发起到一定的借鉴作用。

主要功能代码如下:

using System;

using System.Collections.Generic;

using System.Text;

using System.IO;

using PPT = Microsoft.Office.Interop.PowerPoint;

using System.Reflection;

namespace WritePptDemo

{

class Program

{

static void Main(string[] args)

{

string path; //文件路径变量

PPT.Application pptApp; //Excel应用程序变量

PPT.Presentation pptDoc; //Excel文档变量

PPT.Presentation pptDoctmp;

path = @"C:\MyPPT.ppt"; //路径

pptApp = new PPT.ApplicationClass(); //初始化

//如果已存在,则删除

if (File.Exists((string)path))

{

File.Delete((string)path);

}

//由于使用的是COM库,因此有许多变量需要用Nothing代替

Object Nothing = Missing.Value;

pptDoc = pptApp.Presentations.Add(Microsoft.Office.Core.MsoTriState.msoFalse);

pptDoc.Slides.Add(1, Microsoft.Office.Interop.PowerPoint.PpSlideLayout.ppLayoutText);

string text = "示例文本";

foreach (PPT.Slide slide in pptDoc.Slides)

{

foreach (PPT.Shape shape in slide.Shapes)

{

shape.TextFrame.TextRange.InsertAfter(text);

}

}

//WdSaveFormat为Excel文档的保存格式

PPT.PpSaveAsFileType format = PPT.PpSaveAsFileType.ppSaveAsDefault;

//将excelDoc文档对象的内容保存为XLSX文档

pptDoc.SaveAs(path, format, Microsoft.Office.Core.MsoTriState.msoFalse);

//关闭excelDoc文档对象

pptDoc.Close();

//关闭excelApp组件对象

pptApp.Quit();

Console.WriteLine(path + " 创建完毕!");

Console.ReadLine();

string pathHtml = @"c:\MyPPT.html";

PPT.Application pa = new PPT.ApplicationClass();

pptDoctmp = pa.Presentations.Open(path, Microsoft.Office.Core.MsoTriState.msoTrue, Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoFalse);

PPT.PpSaveAsFileType formatTmp = PPT.PpSaveAsFileType.ppSaveAsHTML;

pptDoctmp.SaveAs(pathHtml, formatTmp, Microsoft.Office.Core.MsoTriState.msoFalse);

pptDoctmp.Close();

pa.Quit();

Console.WriteLine(pathHtml + " 创建完毕!");

}

}

}

以上程序是使用C# 先创建一个ppt 文件并向里面写入了文字,然后再把此ppt 转换成html  ,对于上面程序需要说明的其实就是

引用dll的问题, 在项目中添加引用,在com 组件中选择 microsoft powerpoint 11.0 object   library ,而如果你的电脑没有安装 office 2003 是不会有这个的,而如果安装的是office 2007 则是microsoft powerpoint 12.0 object   library。而且即使你引用成功后,还是会编译不通过,是因为少安装了 office   PIA  ,在安装office 时,如果你是选择的典型安装是不会安装这个的,因为这个只针对开发人员才会用到。可以到网上下载一个 office PIA 安装下就ok了

Office文件转换成Html格式功能代码如下:

using Microsoft.Office.Core;

using Microsoft.Office.Interop.PowerPoint;

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Web;

using System.IO;

using System.Text.RegularExpressions;

using Nd.Webs;

using Aspose.Cells;

using Aspose.Words;

using ND.CommonHelper;

using Microsoft.Office.Interop.PowerPoint;

using Microsoft.Office.Core;

namespace Api.Note.Base

{

#region Office文件转换成Html格式

class OfficeHtmlBo

{

#region InsertHeadHtml

///

/// InsertHeadHtml

///

/// InsertHeadHtml

private string InsertHeadHtml(string strHtml, string realPath)

{

int index = strHtml.IndexOf("

strHtml = strHtml.Insert(index, "

以下是该文档的HTML预览效果。 由于是网页提取显示word中的内容,有可能部分显示与源文档中有差异,如想查看更准确的信息,您可以点击  下载原始附件
");

Regex reg = new Regex(@"(?]+?src="")(?[^""]+?)(?""[^>]+?>)");

strHtml = reg.Replace(strHtml, delegate(Match m)

{

return string.Format("{0}{1}{2}{3}",

m.Groups["start"].Value,

realPath,

m.Groups["src"].Value,

m.Groups["end"].Value

);

});

return strHtml;

}

#endregion

#region GetLeftStr

///

/// 截取字符串左边指定长度

///

///

///

///

public string GetLeftStr(string str, int length)

{

length = length * 2;

string tempStr = "";

int i = 0;

foreach (char c in str)

{

tempStr += c.ToString();

if (((int)c >= 33) && ((int)c <= 126))

{

//字母和符号原样保留

i += 1;

}

else

{

i += 2;

}

if (i >= length)

{

return tempStr;

}

}

return str;

}

#endregion

#region 将Word文档转换成HTML格式

///

/// 将Word文档转换成HTML格式

///

/// Word文档格式

private void WordToHtmlFile(string WordFilePath)

{

try

{

// 指定原文件和目标文件

string realPath = WordFilePath.Substring(0, WordFilePath.LastIndexOf("/") + 1);

WordFilePath = System.Web.HttpContext.Current.Server.MapPath(WordFilePath);

object target = WordFilePath.Substring(0, WordFilePath.LastIndexOf(".")) + ".html";

//string realPath = WordFilePath.Substring(0, WordFilePath.LastIndexOf(".")) + ".html";

if (!File.Exists(target.ToString()))

{

Document doc = new Document(WordFilePath);

doc.Save(target.ToString(), SaveFormat.Html);

}

StreamReader sr = new StreamReader(target.ToString(), Encoding.Default);

string strHtml = sr.ReadToEnd();

strHtml = InsertHeadHtml(strHtml, realPath);

HttpContext.Current.Response.Write(strHtml);

sr.Close();

}

catch (Exception ex)

{

//记录异常

LogEntry logEntry = new LogEntry();

logEntry.Message = ex.Message;

logEntry.Title = "---->将Word文档转换成HTML格式异常[WordToHtmlFile]";

logEntry.TimeStamp = DateTime.Now;

logEntry.LogEntryType = LogEntryType.Error;

logEntry.LogCatalog = LogCatalog.ExceptionLog;

logEntry.StackTrace = ex.StackTrace;

LogPosition logPosition = LogPosition.FileLog;

string positionParameter = SysConfig.ToString(SysConfig.GetAppSetting("LogPath"));

SysLogger.Write(logEntry, logPosition, positionParameter);

}

}

#endregion

#region 将Excel文件转换成HTML格式

///

/// 将Excel文件转换成HTML格式

///

/// Excel文件路径

private void ExcelToHtmlFile(string ExcelFilePath)

{

try

{

string realPath = ExcelFilePath.Substring(0, ExcelFilePath.LastIndexOf("/") + 1);

int index = ExcelFilePath.LastIndexOf("/");

string fileName;

if (ExcelFilePath.IndexOf(":") != -1)

{

fileName = ExcelFilePath.Split(new char[] { ':' })[0].ToString();

fileName = GetLeftStr(fileName.Substring(0, fileName.LastIndexOf(".")), 10) + fileName.Substring(fileName.LastIndexOf("."));

fileName = HttpUtility.UrlEncode(fileName, Encoding.UTF8);

}

else

{

fileName = ExcelFilePath.Substring(index + 1, ExcelFilePath.Length - index - 1);

fileName = GetLeftStr(fileName.Substring(0, fileName.LastIndexOf(".")), 10) + fileName.Substring(fileName.LastIndexOf("."));

//编码

fileName = HttpUtility.UrlEncode(fileName, Encoding.UTF8);

}

fileName = fileName.Substring(0, fileName.LastIndexOf("."));

ExcelFilePath = System.Web.HttpContext.Current.Server.MapPath(ExcelFilePath);

//目标html文件路径

object target = ExcelFilePath.Substring(0, ExcelFilePath.LastIndexOf(".")) + ".html";

string target2 = ExcelFilePath.Substring(0, ExcelFilePath.LastIndexOf("\\")) + "\\" + fileName + "_files\\sheet001.htm";

if (!File.Exists(target.ToString()))

{

//为了保险,只读方式打开

//object readOnly = true;

指定另存为格式(html)

//object format = Microsoft.Office.Interop.Excel.XlFileFormat.xlHtml;

打开Excel文件

//oBook = excelApp.Workbooks.Open(ExcelFilePath, Unknown, readOnly,

// Unknown, Unknown, Unknown, Unknown, Unknown, Unknown,

// Unknown, Unknown, Unknown, Unknown, Unknown, Unknown);

转换格式

//oBook.SaveAs(target, format, Unknown, Unknown, Unknown, Unknown,

// Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange,

// Unknown, Unknown, Unknown, Unknown, Unknown);

Workbook wBook = new Workbook();

wBook.Open(ExcelFilePath);

wBook.Save(target.ToString(), FileFormatType.Html);

}

StreamReader sr = new StreamReader(target2.ToString(), Encoding.Default);

string strHtml = sr.ReadToEnd();

strHtml = InsertHeadHtml(strHtml, realPath);

strHtml = strHtml.Replace("window.location.replace", "");

strHtml = strHtml.Replace("filelist.xml", realPath + "/" + fileName + "_files/filelist.xml");

strHtml = strHtml.Replace("stylesheet.css", realPath + "/" + fileName + "_files/stylesheet.css");

HttpContext.Current.Response.Write(strHtml);

sr.Close();

}

catch (Exception ex)

{

//记录异常

LogEntry logEntry = new LogEntry();

logEntry.Message = ex.Message;

logEntry.Title = "---->将Excel文件转换成HTML格式[ExcelToHtmlFile]";

logEntry.TimeStamp = DateTime.Now;

logEntry.LogEntryType = LogEntryType.Error;

logEntry.LogCatalog = LogCatalog.ExceptionLog;

logEntry.StackTrace = ex.StackTrace;

LogPosition logPosition = LogPosition.FileLog;

string positionParameter = SysConfig.ToString(SysConfig.GetAppSetting("LogPath"));

SysLogger.Write(logEntry, logPosition, positionParameter);

}

}

#endregion

#region 将PPT文件转换成HTML格式

///

/// 将PPT文件转换成HTML格式

///

/// PPT文件路径

private void PptToHtmlFile(string PptFilePath)

{

ApplicationClass ac = new ApplicationClass();

Presentation pptFile = null;

try

{

string realPath = PptFilePath.Substring(0, PptFilePath.LastIndexOf(".")) + ".html";

PptFilePath = System.Web.HttpContext.Current.Server.MapPath(PptFilePath);

//获得html文件名

object target = PptFilePath.Substring(0, PptFilePath.LastIndexOf(".")) + ".html";

if (!File.Exists(target.ToString()))

{

if (PptFilePath.Contains(".pptx"))

{

pptFile = ac.Presentations.Open2007(PptFilePath, MsoTriState.msoCTrue, MsoTriState.msoCTrue, MsoTriState.msoFalse, MsoTriState.msoFalse);

pptFile.SaveAs(target.ToString(), PpSaveAsFileType.ppSaveAsHTML, MsoTriState.msoCTrue);

}

else if (PptFilePath.Contains(".ppt"))

{

pptFile = ac.Presentations.Open(PptFilePath, MsoTriState.msoCTrue, MsoTriState.msoCTrue, MsoTriState.msoFalse);

pptFile.SaveAs(target.ToString(), PpSaveAsFileType.ppSaveAsHTML, MsoTriState.msoCTrue);

}

}

//StreamReader sr = new StreamReader(target.ToString(), Encoding.Default);

//string strHtml = sr.ReadToEnd();

//Response.Write(strHtml);

HttpContext.Current.Response.Redirect(realPath);

}

finally

{

if (pptFile != null)

{

pptFile.Close();

}

ac.Quit();

GC.Collect();

}

}

#endregion

}

#endregion

}

你可能感兴趣的:(php,将ppt转html)