`
suizhikuo
  • 浏览: 28823 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

完成类似QQ邮箱中‘HTML方式查看’功能查看Office文件

 
阅读更多

我们在做一些系统的 下载模块 或者 内部邮箱 的时候,有些使用系统的人可能并没有安装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邮箱类似的多文件上传

    下面我们将深入探讨多文件上传的原理、实现方式以及与QQ邮箱类似的功能特性。 多文件上传的实现主要基于HTML5中的File API和Ajax技术。File API允许浏览器直接读取用户选择的本地文件,而Ajax则可以实现异步数据...

    多文件上传,模仿QQ邮箱

    这个主题“多文件上传,模仿QQ邮箱”旨在为初学者提供一个学习的实例,让他们了解如何实现类似QQ邮箱的文件上传功能。QQ邮箱作为中国流行的电子邮件服务之一,其文件上传体验已经非常成熟,包括了批量选择、进度显示...

    html查看word的新闻发布源码

    完成类似QQ邮箱中‘HTML方式查看’功能查看Office文件。  我们在做一些系统的 下载模块 或者 内部邮箱 的时候,有些使用系统的人可能并没有安装office,但是又急需查看附件的内容甚至图片等等,下载安装一个Office...

    QQ邮箱图片显示代码

    QQ邮箱图片显示代码是电子邮件发送过程中一个重要的技术环节,它涉及到如何在邮件中嵌入图片,使得接收者能够正常查看而不会看到“叉叉”或被提示为外站链接。通常,邮件系统出于安全考虑会阻止外部图片的直接显示,...

    QQ邮箱发送超大附件(文件中转站)功能使用详解.docx

    总而言之,QQ邮箱的文件中转站功能为用户提供了前所未有的大文件传输体验,它的便捷操作、安全机制以及广泛的应用场景,都使得它成为网络交流中不可或缺的工具。随着网络技术的不断进步,文件中转站的性能和功能也将...

    qq邮箱-mail

    QQ邮箱-Mail是一个基于互联网的电子邮箱服务,由腾讯公司提供,是其众多产品线中的一员。这个“LoveMail”项目可能是一个针对QQ邮箱的定制化或优化开发版本,旨在提升用户体验或者实现特定功能。在深入探讨相关知识...

    网页HTML编辑器类似QQ空间 163邮箱编辑器

    标题提及的"网页HTML编辑器类似QQ空间 163邮箱编辑器"可能是指这些编辑器提供了类似于QQ空间和163邮箱内嵌的富文本编辑功能。 QQ空间和163邮箱都是中国知名的在线服务平台,它们的编辑器允许用户方便地编辑和格式化...

    实现类似qq文件传输进度条功能

    在IT行业中,实现类似QQ文件传输进度条的功能是一项常见的需求,尤其在开发文件传输软件或者增强用户界面体验时。这个功能通常涉及到多线程技术、定时器(Timmer)的使用以及界面动态更新。以下是对这些知识点的详细...

    模仿QQ邮箱项目

    开发者可能参考了QQ邮箱的布局和交互设计,尝试在自己的项目中复现这些特性,提供类似的用户体验。 项目文件列表中的"QQmail"可能是整个项目代码的根目录,其中包含了所有相关的源码文件、配置文件、资源文件等。...

    QQ邮箱 HTML编辑器

    QQ邮箱HTML编辑器是腾讯QQ邮箱提供的一种工具,允许用户在编写邮件时使用HTML语言来增强邮件内容的表现力。HTML编辑器通常具有丰富的文本格式化选项,如字体、字号、颜色、对齐方式等,还可能包括插入图片、链接、...

    qq邮箱的JS在线编辑器

    5. **QQ邮箱特定实现**:qqMailEditor.rar系列文件可能是QQ邮箱官方提供的编辑器源码,可能包含QQ邮箱特有的接口调用和样式设定,用于与QQ邮箱的后端服务进行通信,如上传图片、保存草稿、发送邮件等。 6. **...

    类似QQ邮箱的js附件上传源代码

    这段代码是实现一个类似QQ邮箱的JavaScript附件上传功能的示例。主要知识点包括: 1. **JavaScript事件处理**: - `onchange` 事件:当用户在`&lt;input type="file"&gt;`元素中选择了一个文件后触发。在这个例子中,`...

    仿QQ邮箱模版,整套的.asp

    标题中的“仿QQ邮箱模版,整套的.asp”指的是一个基于ASP(Active Server Pages)技术的网页模板,它设计风格模仿了QQ邮箱的界面,为用户提供了一个类似于QQ邮箱的用户体验。这种模板对于那些希望快速搭建邮件服务...

    仿QQ邮箱ASP系统

    【标题】"仿QQ邮箱ASP系统"所涉及的知识点主要集中在使用ASP(Active Server Pages)技术构建一个类似于QQ邮箱的Web应用系统。ASP是微软开发的一种服务器端脚本环境,用于生成动态网页,它允许开发者在HTML代码中...

    QQ绑定企业邮箱的文件

    3. **统一管理多个邮箱**:如果您同时管理着多个不同的企业邮箱,通过QQ邮箱的绑定功能可以将它们统一在一个平台上进行管理,便于查看和分类。 ### 总结 通过上述步骤,您可以轻松地将QQ账号与企业邮箱绑定在一起...

    仿qq邮箱添加收件人效果

    通过以上步骤,我们可以创建一个类似QQ邮箱的收件人添加界面,提供便捷的输入、自动补全和格式验证功能。这个过程需要对HTML、CSS和JavaScript有深入理解,同时也需要关注用户交互设计,以确保最终产品的易用性。...

    使用html和css实现QQ邮箱界面

    在“qqEmail”这个压缩包中,你应该能找到HTML文件和CSS文件,通过查看和分析这些文件,你可以看到这些概念是如何在实际项目中应用的。你可以尝试修改代码,观察不同的样式改变如何影响界面。这将加深你对HTML和CSS...

    QQ邮箱在线文本编辑器

    QQ邮箱在线文本编辑器是一款专为QQ邮箱设计的富文本编辑工具,允许用户在编写邮件时享受到更加便捷和丰富的编辑体验。它提供了ASP和PHP两种版本,以适应不同服务器环境的需求。这款编辑器的主要功能是增强邮件正文的...

    android简单邮箱仿QQ邮箱

    仿QQ邮箱的应用需要创建类似的设计,包括登录页面、邮件列表、邮件详情页、附件查看和下载等。使用XML文件定义布局,结合Java或Kotlin代码进行动态操作。 4. **网络通信**: 发送和接收邮件需要用到HTTP/HTTPS...

    QQ邮箱生成器v1.0

    7. **软件发布与打包**:压缩包中的`QQ邮件生成器.exe`是已编译的可执行文件,表明开发者已经完成了程序的编译和打包过程。在C#中,这通常通过Visual Studio等IDE完成,生成的.exe文件可以直接在Windows操作系统上...

Global site tag (gtag.js) - Google Analytics