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

ASP.NET下Word文档的在线编辑、保存和全文关键字搜索的完整示例

阅读更多
本文演示了如何在线编辑、保存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"             Inheri     ts="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文档的在线编辑、保存,以及搜索包含关键字的文档了。
分享到:
评论

相关推荐

    ASP.NET全文检索包含某关键字的word文档(示例)

    使用PageOffice开发平台,实现对word文档的在线处理,并搜索、显示含有关键字的文档。 要获取文档的纯文本,以往的方法都比较复杂,而且效率也不高,但是利用PageOffice的FileSaver 对象的DocumentText属性却能...

    Aspose.Words For .NET 生成word和pdf 支持模板关键字替换图片替换

    Aspose.Words for .NET 是一个强大的文档处理库,它允许开发者在.NET环境中创建、编辑、格式化和转换Microsoft Word文档以及PDF文件。这个库以其高效性和灵活性而著名,能够帮助程序员实现各种复杂的文档操作,比如...

    基于.NET技术的文档自动化处理研究.rar

    这份研究不仅介绍了理论知识,还可能包含实际案例分析和代码示例,帮助读者理解和实践.NET下的文档自动化处理技术。通过学习这些内容,开发者能够构建高效、可靠的文档自动化解决方案,以应对各种业务场景的需求。

    Elasticsearch Demo 读取word内容写入到Es上并展示在WebFrom页面上

    **Elasticsearch(ES)** 是一个开源的全文搜索引擎,基于Lucene构建,设计用于分布式、可扩展的数据存储和搜索。在这个"Elasticsearch Demo"项目中,我们将学习如何将Word文档的内容读取并写入Elasticsearch,以及...

    lunece全文检索C#

    【lucene.net 全文检索】Lucene 是一个高性能、可扩展的信息检索库,它提供了强大的文本搜索功能。在.NET环境中,我们通常使用Lucene.Net,这是一个针对.NET Framework的移植版本。本文主要介绍如何在C#中使用Lucene...

    Visual C#.NET入门与提高

    《Visual C#.NET入门与提高》是一本专为初学者和有一定基础的程序员设计的教程,旨在帮助读者全面掌握Visual C#.NET编程语言的核心...文档中的word版应该包含了详细的解释、示例代码和练习,是学习C#.NET的宝贵资源。

    C#学习文档Word版

    8. **ASP.NET**:对于Web应用开发,C#与ASP.NET结合,提供了强大的服务器端编程能力,包括MVC(Model-View-Controller)架构和Web API。 9. **单元测试和调试**:学习如何使用NUnit、MSTest等工具进行单元测试,...

    C#.net

    7. **.NET框架**:C#是.NET框架的一部分,它提供了大量的类库和服务,如ASP.NET用于Web开发,Windows Forms和WPF用于桌面应用,Entity Framework用于数据库交互等。 8. **文档注释**:C#支持XML注释,可以自动生成...

    C#全接触word版

    8. **.NET框架与库**:C#基于.NET框架,学习者应了解基础的类库,如System命名空间下的各种类型,以及如ASP.NET、WPF、WinForms等开发框架。 9. **单元测试**:学习使用如NUnit、xUnit等工具进行单元测试,确保代码...

    经典word版c#教程1

    8. **ASP.NET**:如果你打算进行Web开发,了解ASP.NET框架,包括MVC模式和Web Forms,以及如何使用C#来创建动态网站将非常有用。 9. **单元测试**:C#支持各种单元测试框架,如 MSTest、NUnit 和 xUnit,它们对于...

    C#教程完全版(WORD版带图片)

    14. **ASP.NET**:如果你对Web开发感兴趣,你将接触到ASP.NET,它提供了一套构建动态网站的工具和技术。 15. **调试和测试**:学习如何使用Visual Studio的调试器来定位和修复代码中的错误,以及单元测试的重要性。...

    C#基础教程PPT+word版实验题.rar

    本教程旨在为初学者提供C#的基础知识,通过PPT和Word文档的形式进行讲解和练习。 1. **C#语法基础** - 变量:C#中的变量是存储数据的容器,有特定的数据类型,如int、string、bool等。 - 控制流:包括条件语句...

    2021-2022计算机二级等级考试试题及答案No.2078.docx

    - **知识点**:ASP.NET中Response对象的End方法。 - **题目示例**:使用Response.End()方法可以停止服务器处理响应,并返回结果。 - **解析**:当调用Response.End()后,服务器将不再处理该页面的后续内容,直接返回...

    C# 适用于前后端的多语言架构--201903

    在后端,C#通常与ASP.NET框架结合使用,用于构建Web应用程序和服务。ASP.NET 提供了一个全面的开发环境,包括模板、身份验证、缓存等功能,使得构建动态网站和API变得简单。而在前端,C#可以通过Blazor这样的框架...

    c#培训课件(ppt and word)

    通过"C#培训课件"中的PPT和Word文档,学习者将能全面地了解和掌握这些知识点,为未来在C#开发领域奠定坚实的基础。此外,实践项目和代码示例对于巩固理论知识至关重要,因此,建议在学习过程中结合实际编程练习。

    2021-2022计算机二级等级考试试题及答案No.2768.docx

    - **斜体按钮的功能:**在Word文档编辑过程中,斜体按钮用于改变选中文本的字体样式。 - **重复点击的效果:**如果某个格式化按钮被连续点击两次,则其对文本的格式化效果会被取消。 **详细解释:** - 连续点击两次...

    C#使用手册易学的很简单

    12. **ASP.NET**:如果是Web应用开发,会讲解如何构建动态网页。 13. **调试和测试**:如何使用Visual Studio进行代码调试和单元测试。 这份名为"C#使用手册.doc"的文档,可能是以Word格式编写的,便于阅读和打印...

    一款基于python开发的webshell检测工具+源代码+文档说明

    - directory目录下的sensitiveWord.py定义的是后门中的敏感关键字,可以手动添加,格式为{"关键字":"类型"} ``` php_sensitive_words = { "www.phpdp.org":"PHP神盾加密后门", "www.phpjm.net":"PHP加密后门" } `...

    2021-2022计算机二级等级考试试题及答案No.16313.docx

    - **详细解释**: ASP.NET 提供了多种验证控件来帮助开发者确保用户输入的数据符合预期格式或条件。这些控件可以在客户端和服务器端执行验证。然而,并非所有验证都同时在客户端和服务器端进行;有些控件仅在服务器端...

    2021-2022计算机二级等级考试试题及答案No.16616.docx

    - **final和abstract的使用限制**:关键字final和abstract不能同时用于同一个类或方法,因为final意味着最终不可变,而abstract意味着不完整需进一步实现。 ### 3. 输入设备概述 - **输入设备**:如键盘、扫描仪、...

Global site tag (gtag.js) - Google Analytics