本文演示了如何在线编辑、保存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 '%" + key + "%'”,其中“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('未获得文件名');</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/目录下。具体实现代码如下:
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 = '" + content + "' 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文档的在线编辑、保存,以及搜索包含关键字的文档了。
分享到:
相关推荐
使用PageOffice开发平台,实现对word文档的在线处理,并搜索、显示含有关键字的文档。 要获取文档的纯文本,以往的方法都比较复杂,而且效率也不高,但是利用PageOffice的FileSaver 对象的DocumentText属性却能...
ASP.NET生成WORD文档服务器部署注意事项 配置详情请下载附件图解 1、Asp.net 2.0在配置Microsoft Excel、Microsoft Word应用程序权限时 error: 80070005 和8000401a 的解决总 2007-11-01 11:30 检索 COM 类...
最近由于项目需要,特利用vs2010整理了word文档在线预览,此处主要是用office-toolswf-flexpaper实现,在此把这一功能整理成了word文档和一个小例子,希望对您有用。
asp.net练习word文档
使用asp.net导出word文档,看了之后相信会对你有所帮助的!
asp.net 过滤敏感关键字,带有一个过滤关键字列表,.net 3.0上可用。
ASP.NET core 5.0文档PDF(含目录,共5453页)。摘要: ASP.NET Core 文档及新增内容 ASP.NET 比较 .NET Core 和 .NET Framework 入门新增功能 5.0 版中的新增功能 3.1/3.0/2.2/2.1/2.0/1.1 版中的新增功能 教程Web ...
asp.net修改word文字并另存为新的word及pdf,c#代码实现
asp.net 合并word C#,操作word
asp.net帮助文档asp.net帮助文档asp.net帮助文档asp.net帮助文档asp.net帮助文档
ASP.NET C#实现合并多个Word文档
asp.net 开发在线word
asp.net 在线编辑器asp.net 在线编辑器asp.net 在线编辑器asp.net 在线编辑器asp.net 在线编辑器asp.net 在线编辑器asp.net 在线编辑器asp.net 在线编辑器asp.net 在线编辑器asp.net 在线编辑器asp.net 在线编辑器
一个ASP.NET 可以搜索多个关键字的 类
asp.net中根据word模板生成word文档,内包含.cs文件和Microsoft.Office.Interop.Word.dll文件
Aspose.Words For .NET 生成word和pdf文件,支持利用模板替换其中的关键字和关键字替换为图片等操作。
ASP.NET夜话word文档(周公),很好的ASP.NET 学习资料。
ASP.NET期末作业课程设计—流浪书店系统源码+文档ASP.NET期末作业课程设计—流浪书店系统源码+文档ASP.NET期末作业课程设计—流浪书店系统源码+文档ASP.NET期末作业课程设计—流浪书店系统源码+文档ASP.NET期末作业...
微软官方ASP.NET 3.1 官方学习文档,中文版方便学习。
在asp.net中用openxml生成word文档,