ASP.NET下Word在線編輯、保存和全文關鍵字搜索的完整示例(包含源代碼)


本文演示瞭如何word在線編輯、保存word文檔,並搜索含有關鍵字的文檔。
1.項目目的
隨着技術的發展,人們的需求也隨之提高。Office文件的在線處理也越來越受到人們的關注。PageOffice開發平臺無疑爲Office文件的在線處理打開了方便之門。本文就是通過使用PageOffice開發平臺,實現對word在線編輯處理,並搜索、顯示含有關鍵字的文檔。
2.解決思路
我們首先對文檔進行word在線編輯,並保存。保存的時候,將文檔純文本內容存入數據庫,以備搜索時使用。
要獲取文檔的純文本,以往的方法都比較複雜,而且效率也不高,但是利用PageOfficeFileSaver 對象的DocumentText屬性卻能輕而易舉的實現。我們在保存頁面獲取該屬性的值,然後將此值存入到數據庫中,這樣就實現了獲取文檔純文本並將其保存至數據庫中的功能。
然後是關鍵字搜索功能,我們通過數據庫中存儲Word文檔純文本的字段,利用sql語句將包含關鍵字的文檔搜索出來。
實現文檔在線編輯的關鍵是利用PageOffice開發平臺,所以我們要確保VisualStudio.NET開發環境安裝了PageOffice開發平臺。

3.關鍵步驟

1)先安裝PageOffice的服務器端的安裝程序,之後在項目的根目錄下添加pageoffice文件夾(在www.zhuozhengsoft.com網站的“下載中心”中可下載相應的壓縮包,解壓之後直接將PageOffice示例代碼裏的pageoffice文件夾拷貝到項目根目錄下就可以了)。
2)保存文檔純文本:我們在文檔編輯頁面Edit.aspx中從VS工具箱裏拖放一個PageOfficeCtrl控件,然後調用方法AppendToolButton(Caption, JsFunction, IconIndex)PageOfficeCtrl控件的自定義工具欄添加一個保存按鈕。
*****************************************************************

後臺代碼如下:

//添加自定義工具欄按鈕

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

前臺的JS函數如下:
<scripttype="text/javascript">

functionSave() {

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

//document.getElementById("PageOfficeCtrl1").CustomSaveResult獲取的是保存頁面的返回值if(document.getElementById("PageOfficeCtrl1").CustomSaveResult == "ok")

               alert("保存成功");

else     alert(document.getElementById("PageOfficeCtrl1").CustomSaveResult);

       }

</script>

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

3)獲取DocumentText屬性的值:在保存頁面裏通過FileSaver對象獲取,代碼如下:
*****************************************************************
PageOffice.FileSaver fs = newPageOffice.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 '%" + key + "%'”,其中“word”是表名,“Content”是指表中存儲文檔純文本的字段名,“key”就是我們輸入的關鍵字。
接着是實現文檔在線編輯功能的頁面:Edit.aspx。從VS工具箱裏拖放一個PageOfficeCtrl控件,具體代碼如下:

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

前臺Edit.aspx頁面代碼如下:
<%@PageLanguage="C#"AutoEventWireup="true"CodeFile="Edit.aspx.cs"Inherits="SaveAndSearch_Edit"%>


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

<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

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

<headrunat="server">

<title></title>

<scripttype="text/javascript">

functionSave() {

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

//document.getElementById("PageOfficeCtrl1").CustomSaveResult獲取的是保存頁面的返回值

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

               alert("保存成功");

else           alert(document.getElementById("PageOfficeCtrl1").CustomSaveResult);

       }

</script>

</head>

<body>

<formid="form1"runat="server">

<divstyle="width: auto; height: 700px;">

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

</po:PageOfficeCtrl>

</div>

</form>

</body>

</html>

然後是Edit.aspx的後臺代碼Edit.aspx.cs,具體實現代碼如下:
*********************************************************************

protectedvoidPage_Load(object sender, EventArgs e)

{

//設置服務器頁面

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

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

       {

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

stringstrConn = "Provider=Microsoft.Jet.OLEDB.4.0;DataSource=|DataDirectory|demo_search.mdb";

stringsql = " select * from word where id= "+ id;

OleDbConnectionconn = newOleDbConnection(strConn);

OleDbCommandcmd = newOleDbCommand(sql,conn);

           conn.Open();

           cmd.CommandType = CommandType.Text;

OleDbDataReaderReader = cmd.ExecuteReader();

if(Reader.Read())

           {

stringfileName = "";

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

               {

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

               }

else

               {

                  Page.RegisterClientScriptBlock("","<script>alert('未獲得文件名');</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('未獲得文檔的編號');</script>");

return;

       }

}

最後就是保存文檔頁面SaveFile.aspx,它實現了兩個功能,一是將編輯後的文檔的內容保存到數據庫中,二是將編輯後的文檔保存到doc/目錄下。具體實現代碼如下:
protectedvoidPage_Load(object sender, EventArgs e)

{

//定義FileSaver對象

       PageOffice.FileSaverfs = new PageOffice.FileSaver();

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

       {

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

stringcontent = fs.DocumentText;

stringstrConn = "Provider=Microsoft.Jet.OLEDB.4.0;DataSource=|DataDirectory|demo_search.mdb";

stringsql = " update word set Content = '"+ content + "' where id= " + id;

OleDbConnectionconn = newOleDbConnection(strConn);

OleDbCommandcmd = newOleDbCommand(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在線編輯、保存,以及搜索包含關鍵字的文檔了。

本示例代碼在VS2008下編譯通過。本文完整的示例代碼可在http://www.zhuozhengsoft.com網站中下載。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章