• 沙里软件

  • ShaliSoft.com [手机站]   办公桌收纳抽屉
  • 首页
  • 博文
  • 演示
  • 管理
  • ASP.NET下Word文档的在线编辑、保存和全文关键字搜索的完整示例

    网络   2013/9/26 9:06:09

    本文演示了如何在线编辑、保存word文档,并搜索含有关键字的文档。
    1.
    项目目的
    随着技术的发展,人们的需求也随之提高。Office文件的在线处理也越来越受到人们的关注。PageOffice开发平台无疑为Office文件的在线处理打开了方便之门。本文就是通过使用PageOffice开发平台,实现对word文档的在线处理,并搜索、显示含有关键字的文档。
       2.
    解决思路
    我们首先对文档进行在线编辑,并保存。保存的时候,将文档纯文本内容存入数据库,以备搜索时使用。
    要获取文档的纯文本,以往的方法都比较复杂,而且效率也不高,但是利用PageOffice的FileSaver 对象的DocumentText属性却能轻而易举的实现。我们在保存页面获取该属性的值,然后将此值存入到数据库中,这样就实现了获取文档纯文本并将其保存至数据库中的功能。
    然后是关键字搜索功能,我们通过数据库中存储Word文档纯文本的字段,利用sql语句将包含关键字的文档搜索出来。
    实现文档在线编辑的关键是利用PageOffice开发平台,所以我们要确保Visual Studio.NET开发环境安装了PageOffice开发平台。

    3.关键步骤

    (1)先安装PageOffice的服务器端的安装程序,之后在项目的根目录下添加pageoffice文件夹(在PageOffice官方网站的“下载中心”中可下载相应的压缩包,解压之后直接将PageOffice示例代码里的pageoffice文件夹拷贝到项目根目录下就可以了)。
    (2)保存文档纯文本:我们在文档编辑页面Edit.aspx中从VS工具箱里拖放一个PageOfficeCtrl控件,然后调用方法AppendToolButton(Caption, JsFunction, IconIndex)给PageOfficeCtrl控件的自定义工具栏添加一个“保存”按钮。
    *****************************************************************

    后台代码如下:

         //添加自定义工具栏按钮

         PageOfficeCtrl1.AddCustomToolButton("保存", "Save()", 1);

    前台的JS函数如下:
         <script type="text/javascript">

         function Save() {

         document.getElementByIdx_x_x_x_x("PageOfficeCtrl1").WebSave();

         //document.getElementByIdx_x_x_x_x("PageOfficeCtrl1").CustomSaveResult获取的是保存页面的返回值

         if(document.getElementByIdx_x_x_x_x("PageOfficeCtrl1").CustomSaveResult == "ok")

         alert("保存成功");

         else     alert(document.getElementByIdx_x_x_x_x("PageOfficeCtrl1").CustomSaveResult);}

         </script>

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

    (3)获取DocumentText属性的值:在保存页面里通过FileSaver对象获取,代码如下:
    *****************************************************************
    PageOffice.FileSaver fs = new PageOffice.FileSaver();

    string content = fs.DocumentText;//获取DocumentText属性的值
    *****************************************************************

    4.示例程序架构
     ----FileManage.aspx //
    显示文档列表和搜索关键字的页面
     ----FileManage.aspx.cs

     ----Edit.aspx //
    实现文档在线编辑的页面
     ---- Edit.aspx.cs

     ----SaveFile.aspx //
    保存文档的页面
     ---- SaveFile.aspx.cs
    5.
    代码编写

    首先是FileManage.aspx,此页面主要实现搜索包含关键字的文档和显示文档列表的功能。其中关于搜索,我们可以利用sql查询语句来实现,您可以这样写sql语句:“select * from word where Content like &apos;%" + key + "%&apos;”,其中“word”是表名,“Content”是指表中存储文档纯文本的字段名“key”就是我们输入的关键字。
    接着是实现文档在线编辑功能的页面:Edit.aspx。从VS工具箱里拖放一个PageOfficeCtrl控件,具体代码如下:

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

    前台Edit.aspx页面代码如下:
       <%@ Page Language="C#" CodeFile="Edit.aspx.cs"             Inherits="SaveAndSearch_Edit" %>

      <%@ Register Assembly="PageOffice, Version=2.0.0.1, Culture=neutral,     PublicKeyToken=1d75ee5788809228"  Namespace="PageOffice" TagPrefix="po" %>

    <!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></title>

      <script type="text/javascript">

      function Save() {

      document.getElementByIdx_x_x_x_x("PageOfficeCtrl1").WebSave();

      //document.getElementByIdx_x_x_x_x("PageOfficeCtrl1").CustomSaveResult获取的是保存页面的返回值

      if (document.getElementByIdx_x_x_x_x("PageOfficeCtrl1").CustomSaveResult == "ok")

     alert("保存成功");

     else           alert(document.getElementByIdx_x_x_x_x("PageOfficeCtrl1").CustomSaveResult);}

      </script>

      </head>

      <body>

      <form id="form1" runat="server">

      <div style="width: auto; height: 700px;">

      <po:PageOfficeCtrl ID="PageOfficeCtrl1" runat="server" CustomToolbar="True" Menubar="False">

      </po:PageOfficeCtrl>

      </div>

      </form>

      </body>

      </html>

    然后是Edit.aspx的后台代码Edit.aspx.cs,具体实现代码如下:
      *********************************************************************

      protected void Page_Load(object sender, EventArgs e)

      {//设置服务器页面

      PageOfficeCtrl1.ServerPage = "pageoffice/server.aspx";

      if (Request.QueryString["id"] != null && Request.QueryString["id"].ToString().Trim().Length > 0)

     {string id = Request.QueryString["id"].ToString().Trim();

     string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|demo_search.mdb";

     string sql = " select * from word where id= " + id;

     OleDbConnection conn = new OleDbConnection(strConn);

     OleDbCommand cmd = new OleDbCommand(sql, conn);

     conn.Open();

     cmd.CommandType = CommandType.Text;

     OleDbDataReader Reader = cmd.ExecuteReader();

     if (Reader.Read())

     {string fileName = "";

     if (Reader["FileName"] != null && Reader["FileName"].ToString().Length > 0)

     {fileName = Reader["FileName"].ToString().Trim() + ".doc";}

     else

    {Page.RegisterClientScriptBlock("", "<script>alert(&apos;未获得文件名&apos;);</script>");

    return;}

     //添加自定义工具栏按钮

     PageOfficeCtrl1.AddCustomToolButton("保存", "Save()", 1);

     //设置保存页面

     PageOfficeCtrl1.SaveFilePage = "SaveFile.aspx?id=" + id;

     //打开Word文档

     PageOfficeCtrl1.WebOpen(Server.MapPath("doc/") + fileName,      PageOffice.OpenModeType.docNormalEdit, "张佚名");}

     conn.Close();}

     else

      Page.RegisterClientScriptBlock("", "<script>alert(&apos;未获得文档的编号&apos;);</script>");

      return;}

    最后就是保存文档页面SaveFile.aspx,它实现了两个功能,一、是将编辑后的文档的内容保存到数据库中,、是将编辑后的文档保存到doc/目录下。具体实现代码如下:
      protected void Page_Load(object sender, EventArgs e)

      {//定义FileSaver对象

      PageOffice.FileSaver fs = new PageOffice.FileSaver();

      if (Request.QueryString["id"] != null && Request.QueryString["id"].ToString().Trim().Length >  0)

       {string id = Request.QueryString["id"].ToString().Trim();

       string content = fs.DocumentText;

       string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data       Source=|DataDirectory|demo_search.mdb";

       string sql = " update word set Content = &apos;" + content + "&apos; where id= " + id;

       OleDbConnection conn = new OleDbConnection(strConn);

       OleDbCommand cmd = new OleDbCommand(sql, conn);

       conn.Open();

       cmd.CommandType = CommandType.Text;

       cmd.ExecuteNonQuery();

       //将文档内容保存到本地磁盘的Word文档中,fs.FileName指代Edit.aspx.cs页面中打开的Word文件名

       fs.SaveToFile(Server.MapPath("doc/") + fs.FileName);

       //设置保存返回值

       fs.CustomSaveResult = "ok";}

       else

       {//设置保存返回值

       fs.CustomSaveResult = "未获得文档编号ID";}

       //关闭FileSaver对象

       fs.Close();}

    通过这几个页面就可以轻松实现word文档的在线编辑、保存,以及搜索包含关键字的文档了。


    阅读(978) 分享(0)

    上一篇: 必须掌握的php函数集
    下一篇: PHP的事务处理 MYSQL

  • 精彩推荐

    ◆ EditPlus 添加文件比较工具winmerge
    ◆ JS日期格式化扩展函数
    ◆ js判断手机网络类型
    ◆ asp.net怎么实现多线程断点续传?
    ◆ 前端性能优化 - 网页图片资源预加载
    ◆ httpd.ini手册
    ◆ IIS下PHP is_dir()/mkdir() 绝对路径目录BUG
    ◆ 什么是DNS劫持和DNS污染?谈谈运营商的流氓DNS劫持。
    ◆ php木马 隐藏在JPG图片EXIF头部中的恶意软件
    ◆ 中国市场的个人版WinRAR软件完全免费了
  • 用心做事 不能唯利是图

    • 吊儿
    • 用QQ联系我17905772
  • 搜索


  • 最新文章

    • 导出Excel 格式 mso-number-format
    • 服务器iis支持tls1.2,windows server 2008 r2 中IIS启用TLS 1.2(安装SSL后用TLS 1.2)
    • MySQL配置优化
    • EditPlus 添加文件比较工具winmerge
    • 滚动悬浮固定JS特效

  • 热门文章

    • php sso单点登录实现代码
    • 中国菜刀(China chopper) 最新黑客工具
    • redis.conf中文版(基于2.4)
    • 搜索引擎名单大全
    • php图片上传类,支持加水印,生成略缩图

  • 最新图库


  • 最新评论


  • 友情链接

  • 沙里软件

  • 最近访客

    Powered by ShaliSoft.com 豫ICP备13008529号

    免责声明:本站部分内容来源于互联网,转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,不为其版权负责,也不构成任何其他建议。如果发现侵犯版权,联系QQ17905772进行删除。