如何在线打开word文档并高亮显示指定关键字

 本文通过一个实用例子完整演示如何在线打开word文档并高亮显示指定的关键文字。

1. 项目目的

     目前,Office文件的在线处理越来越深入人心,越来越多的办公系统中的Word文档都采用了SOAOffice中间件来在线打开保存,同时也产生了一些更好、更高级的需求,本文所讨论的正是这样的一个需求:

打开文档的时候,高亮显示指定的关键字。

搜索结果高亮显示关键字。

2. 思路

写一个查找函数,可以在查找结束的时候,高亮显示所有的关键字,如果要求打开文档的时候就高亮显示的话,可以在文档打开的事件中处理;如果要高亮显示多个不同的关键字的话,可以用这个函数进行多次的搜索。

3. 关键函数

function  MarkKeyWord(value)

{

    var appSlt = document.getElementById("SOAOfficeCtrl").Document.Application.Selection;

    appSlt.HomeKey(6); // 设置文档中的光标到文件首。

    appSlt.Find.ClearFormatting();

    appSlt.Find.Replacement.ClearFormatting();

    appSlt.Find.Text = value;

   while (appSlt.Find.Execute()){

        appSlt.Range.HighlightColorIndex = 7; // 高亮时的背景色

    }

    appSlt.HomeKey(6);

}

4. 示例程序架构

这里使用ASP.NET示例,关键代码就是上面的那个函数,用什么开发语言都可以做这个效果,这个应用也不涉及到保存,为了简单,保存的代码也忽略掉了。

Demo/

|---- Highlight.aspx       // 打开文档的页面

|---- Highlight.aspx.cs

Doc/                //存放文档的目录

        |-- test.doc        //测试文件,test.asp就是打开的这个文件

5. 代码编写

Highlight.aspx

************************

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Highlight.aspx.cs" Inherits="Highlight" %>

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

 

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

    <title>Highlight</title>

    <script type="text/javascript">

        function  MarkKeyWord(value)

        {

               var appSlt = document.getElementById("SOAOfficeCtrl").Document.Application.Selection;

               appSlt.HomeKey(6);

                   appSlt.Find.ClearFormatting();

                   appSlt.Find.Replacement.ClearFormatting();

               appSlt.Find.Text = value;

 

             while (appSlt.Find.Execute())

               {

                      appSlt.Range.HighlightColorIndex = 7;

               }

               appSlt.HomeKey(6);

        }

    </script>

</head>

<body>

    <form id="formData" runat="server" method="post">

    <div>

   

    </div>

    <!--**************   SOAOFFICE 客户端代码开始    ************************-->

       <SCRIPT language="JavaScript" event="OnInit()" for="SOAOfficeCtrl">

              // 控件打开文档前触发,用来初始化界面样式

       </SCRIPT>

       <SCRIPT language="JavaScript" event="OnDocumentOpened(str, obj)" for="SOAOfficeCtrl">

              // 控件打开文档后立即触发,添加自定义菜单,自定义工具栏,禁止打印,禁止另存,禁止保存等等

              bDocOpen = true;

              MarkKeyWord("");

       </SCRIPT>

       <SCRIPT language="JavaScript" event="OnDocumentClosed()" for="SOAOfficeCtrl">

              bDocOpen = false;

       </SCRIPT>

       <SCRIPT language="JavaScript" event="OnUserMenuClick(index, caption)" for="SOAOfficeCtrl">

              // 添加您的自定义菜单项事件响应

       </SCRIPT>

       <SCRIPT language="JavaScript" event="OnCustomToolBarClick(index, caption)" for="SOAOfficeCtrl">

              // 添加您的自定义工具栏按钮事件响应

       </SCRIPT>   

    <!--   OBJECT标签,客户端控件引用    -->

       <OBJECT id="SOAOfficeCtrl" codeBase="SOAOffice.ocx#version=8,1,0,0" height="100%" width="100%"

           data="" classid="clsid:83171BA4-BDCA-42a8-BE44-745ABF36EB7E" VIEWASTEXT>

           <div align="center" STYLE="color:red;">

           本机尚未安装SOAOFFICE客户端控件,请安装浏览器上方黄色提示条或弹出提示框中的SOAOFFICE客户端控件。</div>

           </OBJECT>

    <!--**************   SOAOFFICE客户端代码结束   ************************-->

    </form>

</body>

</html>

 

 

 

Highlight.aspx.cs

 ******************

// 仅在Page_Load中添加下面的代码即可

protected void Page_Load(object sender, EventArgs e)

    {

        //-----------  SOAOFFICE 服务器端编程开始  -------------------//

 

        // 首先确保引用SOAOFFICE中间件的服务器端.NET组件SOAOfficeX

        // SOAOfficeX.dll 在本示例代码的 bin 文件夹下

        SOAOfficeX.SOAOfficeCtrl SOACtrl = new SOAOfficeX.SOAOfficeCtrl();

 

        // 设置SOAOFFICE中间件服务页面

        SOACtrl.ServerURL = "soaservice/soaserv.aspx";

        SOACtrl.SaveDocURL = "SaveDoc.aspx";

 

        SOACtrl.WebOpen("doc/test.doc", SOAOfficeX.soaWorkMode.docNoRevision, "somebody", "Word.Document");

        //-----------  SOAOFFICE 服务器端编程结束  -------------------//

 

    }

6. 思路拓展

       利用这个技术(主要是MarkKeyWord函数),其一,可以实现在文档打开以后的任何时候执行搜索高亮显示,不一定是在文档的的同时;其二,可以高亮显示关键字,那么也就可以取消高亮显示,这样又可以重新搜索高亮显示其他的关键字;其三,可以同时高亮显示多个关键字,只需要设置不同的高亮颜色就可以了,修改HighlightColorIndex的值:

appSlt.Range.HighlightColorIndex = 7;  // 黄色

本文完整的示例代码请下载:

http://www.kehansoft.com/web/shared/democode/mark_key_word2.rar

转摘声明:转摘请注明出处并做回链。

 

SOAOFFICE - 微软 OFFICE 中间件 SOAOffice 中间件是北京科翰软件为微软OFFICE量身打造的Web中间件,是Web调用Office、存取Office数据的必备中间件。SOAOffice中间件服务器端数据组件和客户端显示控件构成。 SOAOffice 完全抛弃了传统利用Office服务器端自动化技术存取文档数据的种种弊端和缺陷,采用独创的专利技术构建了一个功能强大、简单易用的微软Office中间件平台,平台提供标准的.net和java组件接口,不但能够在线(浏览器页面)打开、编辑、保存Office文档,而且开发人员还能够以简洁的代码快速的将数据库数据动态填充到Office文档指定位置,并且也能够从Office文档中提取指定位置的数据保存到数据库。 SOAOffice提供这些强大功能的同时,服务器端并不需要安装运行Office软件。通过SOAOffice,在Web世界里,难以驯服的Word/Excel就变成了普通的、熟悉的、服务器端可调用的.Net组件、Java组件、ASP组件、PHP组件,开发人员再也不用研究复杂的Word/Excel COM自动化细节、学习复杂的VBA语法调用,也不用去应对Word/Excel死进程、系统稳定运行的问题。开发人员能够节省宝贵的精力和时间,把它投放到更重要的业务逻辑和系统架构上,而控制Office的具体技术细节交给SOAOffice去做。 SOAOffice除了提供Word/Excel动态数据填充,Word/Excel数据导入导出,Word/Excel/PowerPoint等Office文档在线打开、编辑、保存,权限控制,只读控制等功能外,还给在线办公内置了强大的支持功能:强制痕迹保留,手写批注,圈阅签字,手写签名,电子印章、数字签名、模板套红、一键套红等。 科翰软件是国内唯一的微软Office中间件开发商,拥有卓越的自主研发实力和独创的专利技术,其产品SOAOffice不仅畅销国内,而且还远销欧美国际市场,其中世界500强美国Dover集团、可口可乐 Coca-Cola、中石油、中石化等都是SOAOffice产品的忠实客户。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值