注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

天涯倦客的博客

祝福你朋友永远快乐!

 
 
 

日志

 
 

ASP.NET使用点聚WebOffice实现文档在线浏览  

2017-05-03 09:23:20|  分类: C# |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

转自:http://blog.csdn.net/wangqiuyun/article/details/7614667

前段时间应导师要求,把他的那一堆堆word文档分类整理,并在此基础上做一个基于B/S的文件管理系统,并能实现查找浏览,文件管理系统问题不大,问题是怎把那一堆堆word文档给展示出来,上千个word文档我不可能一个个把里面的内容都录入数据库,况且word文档里面有些还有图什么的,怎么办呢?想来想去,最后想到了WebOffice这个东东,经过不懈努力最后终于弄好了,在此和大家分享一下!

首先我选用的是点聚的WebOffice V6.0.4.4(主要是体积小点),最新的是V6.0.5.0(发布日期2010-07-17),下载地址:http://www.dianju.cn/forum/viewtopic.php?f=2&t=2#p2,下载其中的一个示例,比如HTML例子,里面就有weboffice_v6.0.5.0.cab这个包,要用到的就是他里面的WebOffice.ocx这个东西,官网上还有一个pdf的开发文档,大家可以看看,但是我本人由于时间比较紧迫,加上本人一看JavaScript就头疼,我就简单实现了我想要的功能:用这个WebOffice打开我指定的word文档,其他的我就不深入研究了,各位有需要可以自行研究。

废话少说,在你的Web应用程序里新建一个web窗体,比如openFile.aspx,其中openFile.aspx代码很简单如下:

  1. <%@ Page Language="C#" AutoEventWireup="true" CodeFile="openFile.aspx.cs" Inherits="openFile" %>  
  2.   
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  4. <html xmlns="http://www.w3.org/1999/xhtml">  
  5. <head runat="server">  
  6.     <title>CICCPS</title>  
  7.   
  8.     <script language="javascript" type="text/javascript">  
  9.         //WebOffice1_NotifyCtrlReady();    
  10.         function openDoc() {  
  11.             var fid='<%=fid %>';  
  12.             //alert("/Files.aspx?fid="+fid);  
  13.             //加载控件  
  14.             document.all.WebOffice.LoadOriginalFile("/Files.aspx?fid="+fid, "doc");  
  15.             //隐藏不需要的按钮  
  16.             document.all.WebOffice.HideMenuItem(0x01 + 0x02 + 0x04 + 0x10 + 0x20);  
  17.               
  18.         }  
  19.         function WebOpen()  
  20.         {  
  21.             obj = document.all.item("WebOffice");  
  22.             if (obj !='')  
  23.             {  
  24.                 //等待控件初始化完毕,时间长短可以根据网络速度设定。  
  25.                 setTimeout('openDoc()',100);  
  26.             }  
  27.         }  
  28.      </script>  
  29.   
  30. </head>  
  31. <body onload="javascript:WebOpen();">  
  32.     <form id="form1" runat="server">  
  33.     <div>  
  34.         <object id="WebOffice" height="768" width='100%' style='left: 0px; top: 0px' classid='clsid:E77E049B-23FC-4DB8-B756-60529A35FAD5'  
  35.             codebase='/weboffice/WebOffice.ocx'>  
  36.             <param name='_ExtentX' value='6350'>  
  37.             <param name='_ExtentY' value='6350'>  
  38.               
  39.         </object>  
  40.   
  41.     </div>  
  42.     </form>  
  43. </body>  
  44. </html>  

这里主要说两点,第一点是document.all.WebOffice.LoadOriginalFile("/Files.aspx?fid="+fid, "doc");这个脚本,这个LoadOriginalFile()函数入口参数有两个,第一个是word文件在服务器端的地址,说简单点就是你只要能保证"/Files.aspx?fid="+fid能下载到对应的文件就行,第二个参数当然就是文件类型了;第二点是这段脚本

  1. <object id="WebOffice" height="768" width='100%' style='left: 0px; top: 0px' classid='clsid:E77E049B-23FC-4DB8-B756-60529A35FAD5'  
  2.     codebase='/weboffice/WebOffice.ocx'>  
  3.     <param name='_ExtentX' value='6350'>  
  4.     <param name='_ExtentY' value='6350'>   
  5. </object>  

 它的意思是:自动更新classid= E77E049B-23FC-4DB8-B756-60529A35FAD5的COM组件, 更新地址为/weboffice/WebOffice.ocx,codebase后的路径为相对路径也可为绝对路径,要更新的最新版本为6.0.4.4。此时,IE会自动访问注册表,如果发现当前机器未安装或者当前版本低于6.0.4.4,就会自动下载。

至于openFile.aspx.cs的代码就更简单,主要是实现fid的数值绑定,当然你也可以在前面用js脚本直接取fid,但是我这边还得验证这个文件编号,所以就写在了后面。

  1. public string fid = "1";  
  2. protected void Page_Load(object sender, EventArgs e)  
  3. {  
  4.     fid = Request["fid"].ToString();  
  5.     Page.DataBind();  
  6. }  

这样就能在线打开word文件啦,最后顺便提一下WebOffice工作原理,所谓的在线打开word文档,其实WebOffice是先把你要打开的文件下载回你本机的临时目录,再调用你本地机器上的office来打开,也就是说如果你机器上没有Office的话,那么WebOffice也是无能为力的。另外每台客户端机器第一次打开文件时都要下载那个WebOffice.ocx回本地C:\WINDOWS\system32目录,所以浏览器必须允许阻止的内容被打开,这样系统才会自动下载安装weboffice控件。最后看看那效果。

效果图

 

  评论这张
 
阅读(21)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017