zl程序教程

您现在的位置是:首页 >  后端

当前栏目

C#实现将PPT转换成HTML的方法

c#方法HTML 实现 转换成 ppt
2023-06-13 09:15:41 时间

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

主要功能代码如下:

usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
usingSystem.IO;
usingPPT=Microsoft.Office.Interop.PowerPoint;
usingSystem.Reflection;

namespaceWritePptDemo
{
classProgram
{
staticvoidMain(string[]args)
{
stringpath;//文件路径变量

PPT.ApplicationpptApp;//Excel应用程序变量
PPT.PresentationpptDoc;//Excel文档变量

PPT.PresentationpptDoctmp;

path=@"C:\MyPPT.ppt";//路径
pptApp=newPPT.ApplicationClass();//初始化

//如果已存在,则删除
if(File.Exists((string)path))
{
File.Delete((string)path);
}

//由于使用的是COM库,因此有许多变量需要用Nothing代替
ObjectNothing=Missing.Value;
pptDoc=pptApp.Presentations.Add(Microsoft.Office.Core.MsoTriState.msoFalse);
pptDoc.Slides.Add(1,Microsoft.Office.Interop.PowerPoint.PpSlideLayout.ppLayoutText);

stringtext="示例文本";

foreach(PPT.SlideslideinpptDoc.Slides)
{
foreach(PPT.Shapeshapeinslide.Shapes)
{
shape.TextFrame.TextRange.InsertAfter(text);
}
}

//WdSaveFormat为Excel文档的保存格式
PPT.PpSaveAsFileTypeformat=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();


stringpathHtml=@"c:\MyPPT.html";

PPT.Applicationpa=newPPT.ApplicationClass();

pptDoctmp=pa.Presentations.Open(path,Microsoft.Office.Core.MsoTriState.msoTrue,Microsoft.Office.Core.MsoTriState.msoFalse,Microsoft.Office.Core.MsoTriState.msoFalse);
PPT.PpSaveAsFileTypeformatTmp=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组件中选择microsoftpowerpoint11.0object  library,而如果你的电脑没有安装office2003是不会有这个的,而如果安装的是office2007则是microsoftpowerpoint12.0object  library。而且即使你引用成功后,还是会编译不通过,是因为少安装了office  PIA ,在安装office时,如果你是选择的典型安装是不会安装这个的,因为这个只针对开发人员才会用到。可以到网上下载一个officePIA安装下就ok了
 
Office文件转换成Html格式功能代码如下:  

usingMicrosoft.Office.Core;
usingMicrosoft.Office.Interop.PowerPoint;

usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Web;
usingSystem.IO;
usingSystem.Text.RegularExpressions;
usingNd.Webs;
usingAspose.Cells;
usingAspose.Words;
usingND.CommonHelper;
usingMicrosoft.Office.Interop.PowerPoint;
usingMicrosoft.Office.Core;

namespaceApi.Note.Base
{
#regionOffice文件转换成Html格式
classOfficeHtmlBo
{
#regionInsertHeadHtml
///<summary>
///InsertHeadHtml
///</summary>
///<paramname="WordFilePath">InsertHeadHtml</param>
privatestringInsertHeadHtml(stringstrHtml,stringrealPath)
{
intindex=strHtml.IndexOf("<body");
strHtml=strHtml.Insert(index,"<divstyle="height:60px;font-size:14px;margin:0px0px12px0px;padding:14px4px12px12px;line-height:24px;height:1%;">以下是该文档的HTML预览效果。<br/><span>由于是网页提取显示word中的内容,有可能部分显示与源文档中有差异,如想查看更准确的信息,</span>您可以点击 <astyle="color:6699FF;text-decoration:underline;"href="/Lib/UdControls/Download.aspx?action=Download&appFormCode="+HttpContext.Current.Request.QueryString["appFormCode"].ToString()+"&path="+HttpContext.Current.Request.QueryString["path"].ToString()+"&encrypt="+HttpContext.Current.Request.QueryString["encrypt"].ToString()+""><b>下载原始附件</b></a></div>");

Regexreg=newRegex(@"(?<start><img[^>]+?src="")(?<src>[^""]+?)(?<end>""[^>]+?>)");
strHtml=reg.Replace(strHtml,delegate(Matchm)
{
returnstring.Format("{0}{1}{2}{3}",
m.Groups["start"].Value,
realPath,
m.Groups["src"].Value,
m.Groups["end"].Value
);
});

returnstrHtml;
}
#endregion

#regionGetLeftStr
///<summary>
///截取字符串左边指定长度
///</summary>
///<paramname="str"></param>
///<paramname="length"></param>
///<returns></returns>
publicstringGetLeftStr(stringstr,intlength)
{
length=length*2;
stringtempStr="";
inti=0;
foreach(charcinstr)
{
tempStr+=c.ToString();
if(((int)c>=33)&&((int)c<=126))
{
//字母和符号原样保留
i+=1;
}
else
{
i+=2;
}
if(i>=length)
{
returntempStr;
}
}
returnstr;
}

#endregion

#region将Word文档转换成HTML格式
///<summary>
///将Word文档转换成HTML格式
///</summary>
///<paramname="WordFilePath">Word文档格式</param>
privatevoidWordToHtmlFile(stringWordFilePath)
{
try
{
//指定原文件和目标文件
stringrealPath=WordFilePath.Substring(0,WordFilePath.LastIndexOf("/")+1);
WordFilePath=System.Web.HttpContext.Current.Server.MapPath(WordFilePath);
objecttarget=WordFilePath.Substring(0,WordFilePath.LastIndexOf("."))+".html";
//stringrealPath=WordFilePath.Substring(0,WordFilePath.LastIndexOf("."))+".html";

if(!File.Exists(target.ToString()))
{
Documentdoc=newDocument(WordFilePath);
doc.Save(target.ToString(),SaveFormat.Html);
}
StreamReadersr=newStreamReader(target.ToString(),Encoding.Default);
stringstrHtml=sr.ReadToEnd();
strHtml=InsertHeadHtml(strHtml,realPath);
HttpContext.Current.Response.Write(strHtml);
sr.Close();
}
catch(Exceptionex)
{
//记录异常
LogEntrylogEntry=newLogEntry();
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;
LogPositionlogPosition=LogPosition.FileLog;
stringpositionParameter=SysConfig.ToString(SysConfig.GetAppSetting("LogPath"));
SysLogger.Write(logEntry,logPosition,positionParameter);
}
}
#endregion

#region将Excel文件转换成HTML格式
///<summary>
///将Excel文件转换成HTML格式
///</summary>
///<paramname="ExcelFilePath">Excel文件路径</param>
privatevoidExcelToHtmlFile(stringExcelFilePath)
{
try
{
stringrealPath=ExcelFilePath.Substring(0,ExcelFilePath.LastIndexOf("/")+1);
intindex=ExcelFilePath.LastIndexOf("/");
stringfileName;
if(ExcelFilePath.IndexOf(":")!=-1)
{
fileName=ExcelFilePath.Split(newchar[]{":"})[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文件路径
objecttarget=ExcelFilePath.Substring(0,ExcelFilePath.LastIndexOf("."))+".html";
stringtarget2=ExcelFilePath.Substring(0,ExcelFilePath.LastIndexOf("\\"))+"\\"+fileName+"_files\\sheet001.htm";
if(!File.Exists(target.ToString()))
{
//为了保险,只读方式打开
//objectreadOnly=true;
////指定另存为格式(html)
//objectformat=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);

WorkbookwBook=newWorkbook();
wBook.Open(ExcelFilePath);
wBook.Save(target.ToString(),FileFormatType.Html);
}

StreamReadersr=newStreamReader(target2.ToString(),Encoding.Default);
stringstrHtml=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(Exceptionex)
{
//记录异常
LogEntrylogEntry=newLogEntry();
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;
LogPositionlogPosition=LogPosition.FileLog;
stringpositionParameter=SysConfig.ToString(SysConfig.GetAppSetting("LogPath"));
SysLogger.Write(logEntry,logPosition,positionParameter);
}
}
#endregion

#region将PPT文件转换成HTML格式
///<summary>
///将PPT文件转换成HTML格式
///</summary>
///<paramname="PptFilePath">PPT文件路径</param>
privatevoidPptToHtmlFile(stringPptFilePath)
{
ApplicationClassac=newApplicationClass();
PresentationpptFile=null;
try
{
stringrealPath=PptFilePath.Substring(0,PptFilePath.LastIndexOf("."))+".html";
PptFilePath=System.Web.HttpContext.Current.Server.MapPath(PptFilePath);
//获得html文件名
objecttarget=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);
}
elseif(PptFilePath.Contains(".ppt"))
{
pptFile=ac.Presentations.Open(PptFilePath,MsoTriState.msoCTrue,MsoTriState.msoCTrue,MsoTriState.msoFalse);
pptFile.SaveAs(target.ToString(),PpSaveAsFileType.ppSaveAsHTML,MsoTriState.msoCTrue);
}
}
//StreamReadersr=newStreamReader(target.ToString(),Encoding.Default);
//stringstrHtml=sr.ReadToEnd();
//Response.Write(strHtml);
HttpContext.Current.Response.Redirect(realPath);
}
finally
{
if(pptFile!=null)
{
pptFile.Close();
}
ac.Quit();
GC.Collect();
}
}
#endregion
}
#endregion
}