我们在做一些系统的 下载模块 或者 内部邮箱 的时候,有些使用系统的人可能并没有安装office,但是又急需查看附件的内容甚至图片等等,下载安装一个Office又不大现实(时间要求紧?在某个网吧?在朋友家里?),那么如何查看一些常用的附件呢?
其实QQ邮箱有个功能很好,它可以以 HTML方式查看 Office文件,例如Word文档、Excel表格已经PowerPoint幻灯片等,这个功能有很多实现的办法,例如使用SPS就是办法之一,但是其实大部分时候,我们用不到SPS,或者由于正版软件太贵了,那如何使用ASP.NET 2.0(C#)来实现这个功能?
注意:以下代码在vs2008,office2007,windowsxp下测试通过,项目需要添加Excel 12、Word12、PowerPoint12、Office12 四个com引用
///<summary>
///将PPT文件转换成HTML格式
///</summary>
///<paramname="PptFilePath">PPT文件路径</param>
publicstaticvoidPptToHtmlFile(stringPptFilePath)
{
Microsoft.Office.Interop.PowerPoint.Applicationppt=newMicrosoft.Office.Interop.PowerPoint.Application();
Microsoft.Office.Interop.PowerPoint.PresentationpptFile=null;
try
{
//获得html文件名
stringhtmlFileName=PptFilePath.Substring(0,PptFilePath.LastIndexOf("."))+".html";
//打开一个ppt文件
pptFile=ppt.Presentations.Open(PptFilePath,Microsoft.Office.Core.MsoTriState.msoTrue,
Microsoft.Office.Core.MsoTriState.msoCTrue,Microsoft.Office.Core.MsoTriState.msoFalse);
//转换成html格式
pptFile.SaveAs(htmlFileName,Microsoft.Office.Interop.PowerPoint.PpSaveAsFileType.ppSaveAsHTML,
Microsoft.Office.Core.MsoTriState.msoCTrue);
}
finally
{
if(pptFile!=null)
{
pptFile.Close();
}
ppt.Quit();
GC.Collect();
}
}
///<summary>
///将Excel文件转换成HTML格式
///</summary>
///<paramname="ExcelFilePath">Excel文件路径</param>
publicstaticvoidExcelToHtmlFile(stringExcelFilePath)
{
Microsoft.Office.Interop.Excel.ApplicationexcelApp=newMicrosoft.Office.Interop.Excel.Application();
Microsoft.Office.Interop.Excel.WorkbookoBook=null;
//缺省参数
objectUnknown=Type.Missing;
try
{
//目标html文件路径
objectTarget=ExcelFilePath.Substring(0,ExcelFilePath.LastIndexOf("."))+".html";
//为了保险,只读方式打开
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);
}
finally
{
if(oBook!=null)
{
oBook.Close(false,Unknown,Unknown);
}
excelApp.Quit();
GC.Collect();
}
}
///<summary>
///将Word文档转换成HTML格式
///</summary>
///<paramname="WordFilePath">Word文档格式</param>
publicstaticvoidWordToHtmlFile(stringWordFilePath)
{
Microsoft.Office.Interop.Word.ApplicationnewApp=newMicrosoft.Office.Interop.Word.Application();
Microsoft.Office.Interop.Word.Documentdoc=null;
//缺省参数
objectUnknown=Type.Missing;
try
{
//指定原文件和目标文件
objectSource=WordFilePath;
objectTarget=WordFilePath.Substring(0,WordFilePath.LastIndexOf("."))+".html";
//为了保险,只读方式打开
objectreadOnly=true;
//指定另存为格式(html)
objectformat=Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatHTML;
//打开doc文件
doc=newApp.Documents.Open(refSource,refUnknown,refreadOnly,
refUnknown,refUnknown,refUnknown,refUnknown,refUnknown,refUnknown,
refUnknown,refUnknown,refUnknown,refUnknown,refUnknown,refUnknown,refUnknown);
//转换格式
doc.SaveAs(refTarget,refformat,
refUnknown,refUnknown,refUnknown,refUnknown,refUnknown,refUnknown,refUnknown,
refUnknown,refUnknown,refUnknown,refUnknown,refUnknown,refUnknown,refUnknown);
}
finally
{
if(doc!=null)
{
//关闭文档和Word程序
doc.Close(refUnknown,refUnknown,refUnknown);
}
newApp.Quit(refUnknown,refUnknown,refUnknown);
GC.Collect();
}
}
有了这三个方法,我们可以在上传文件时将对应的office文件转成html的文件,跟office文件放在同一个目录中,同时加一个对应的链接“HTML方式查看”即可。
如果是第二期添加这个功能,那可以在获得文件列表的时候,先取得文件的扩展名,然后再查看有没有对应的HTML文件,如果没有,则即时生成一个,很方便,不过如果量很大的话,转换的速度会比较慢,最好是写一个winform的程序遍历整个目录,先把html文件生成一遍,这样再打开就会很快了。
简单的写一个如下:
///<summary>
///生成文件对应的HTML版本(没有考虑HTML文件已经存在的处理)
///</summary>
///<paramname="fileFullName">文件路径</param>
///<returns>如果生成了对应的HTML文件,返回true,如果不需要生成HTML文件,返回flase</returns>
publicstaticboolConvertFileToHtml(stringfileFullName)
{
System.IO.FileInfofile=newSystem.IO.FileInfo(fileFullName);
if(file.Exists)
{
stringstrExt=file.Extension.Substring(1).ToLower();
switch(strExt)
{
case"doc":
case"docx":
WordToHtmlFile(fileFullName);
returntrue;
case"xls":
case"xlsx":
ExcelToHtmlFile(fileFullName);
returntrue;
case"ppt":
case"pptx":
PptToHtmlFile(fileFullName);
returntrue;
default:
returnfalse;
}
}
returnfalse;
}
这样就OK了
分享到:
相关推荐
类似qq邮箱附件上传功能,选择文件逐条自定上传,删除等,后台java
完成类似QQ邮箱中‘HTML方式查看’功能查看Office文件。 我们在做一些系统的 下载模块 或者 内部邮箱 的时候,有些使用系统的人可能并没有安装office,但是又急需查看附件的内容甚至图片等等,下载安装一个Office...
类似QQ邮箱助手的Flash饼状图例子,含有源文件及调用的静态页面等全套文件
实现类似qq文件传输进度条功能,使用TIMMER和多线程-Qq realize a similar function of file transfer progress bar, use Timmer
QQ邮箱类似的多文件上传
网页HTML编辑器网页HTML编辑器网页HTML编辑器类似QQ空间 163邮箱编辑器网页HTML编辑器类似QQ空间 163邮箱编辑器
如何利用 Java 实现 QQ 文件传输功能 现在, 通过网络传输文件已经非常普遍, 各种传输工 具也很多, 最具有代表性的就是 QQ 提供的文件传输功能了, 它能让好友之间方便的把自己的文件传给对方。 仔细查看 QQ 的...
类似QQ邮箱的js附件上传源代码,对于学习来讲还是不错的。
软件工程课程中的QQ邮箱测试用例 比较详尽,谢谢大家
1、在网上都没找到的android...2、控件支持从外部直接设置邮件地址和手动输入邮件地址功能,以分号结束区分,文件中有APP,自己可以安装试试看效果再来评价。 3、 效果和功能不差于腾讯手机上的QQ邮箱收件人输入框功能
大家在使用android手机时都发现,其邮箱功能是十分强大的,实时接收邮件,并有通知提醒,像看短信似的。这样方便的邮箱功能是每个邮箱使用者的福音。但是邮箱有那么多种,android手机上默认的是使用google邮箱的,...
QQ邮箱 HTML编辑器 趴下来的!
模仿QQ邮箱的大文件上传功能,带进度条,源代码,可自行修改,基于swfupload制作
QQ邮箱上传控件软件,运行环境:win7系统
VC TCP实现类似QQ群聊天、文件传输功能展示,程序由注册登录服务器、聊天通信服务器、客户端三部分组成,编译测试之前:请先注册ODBC数据源;数据源名称:wbQQuser;类型:ACCESS;文件名:wbQQuser.mdb。 附加...
使用简单的html和css样式完成QQ邮箱的模样,可以更好的学习前端技术
QQ邮箱发送超大附件(文件中转站)功能使用详解.docx
多文件上传,文件上传,模仿QQ邮箱,供初学者学习。
实现多文件上传的JS,模仿QQ邮箱,初学者学习。
QQ邮箱1G上传控件,便于上传大文件,很好用的,用前安装