Asp.net 使用weboffice实现Word在线编辑

项目中客户需要在页面中实现Word的在线编辑,Word写保护等功能。之前写了篇文章,用的是dsoframer.ocx,参考的都是网络上的资源。用的时候页面卡,

而且word2003和word2007有问题。现在找了个另外一个组件,点聚公司的weboffice,还不错。主要是免费的。

关于weboffice的使用,大家可以看看官网,他那有演示。我这也把我找的资源和大家分享下。

关于用户在线编辑后上传文档到服务器,实现方式如下:

js处理:

ExpandedBlockStart.gif 代码
 

  var Saveinfo = function() {
            try {
                var id = getUrlPara("id");

                var webObj = document.getElementById("WebOffice1");
                webObj.HttpInit();   //初始化Http引擎
                // 添加相应的Post元素
                webObj.HttpAddPostString("id", id);
                var state = "0";
                if (document.getElementById("Checkbox1").checked == true) {
                    state = "1";
                }
                webObj.HttpAddPostString("state", state);
                //  webObj.HttpAddPostString("DocID", myform.DocID.value);
                webObj.HttpAddPostCurrFile("DocContent", "");  // 上传文件
                returnValue = webObj.HttpPost("http://localhost:38706/AssessManage/AssessDocuments/weboffice/savedoc.ashx"); // 判断上传是否成功
                if ("succeed" == returnValue) {
                    alert("修改成功,请更新列表页面!");
                } else if ("failed" == returnValue)
                    alert("修改失败");
            } catch (e) {
                alert("异常\r\nError:" + e + "\r\nError Code:" + e.number + "\r\nError Des:" + e.description);
            }
        }

savedoc.ashx进行文件处理:

这里我是创建一个新的doc文件。

 

ExpandedBlockStart.gif 代码
public   class  savedoc : IHttpHandler
    {

        
public   void  ProcessRequest(HttpContext context)
        {
            context.Response.ContentType 
=   " text/plain " ;
            context.Response.Buffer 
=   true ;
            context.Response.ExpiresAbsolute 
=  DateTime.Now.AddDays( - 1 );
            context.Response.AddHeader(
" pragma " " no-cache " );
            context.Response.AddHeader(
" cache-control " "" );
            context.Response.CacheControl 
=   " no-cache " ;

            Super.Wdxt.Kpgl.EnumList.UserIdentity _useridentity 
=  IdebtityBll.GetIndentityName(Super.Wdxt.Kpgl.Common.getUserBasicInfo.SchoolId(), Super.Wdxt.Kpgl.Common.getUserBasicInfo.UserId());
            
if  (_useridentity  !=  Super.Wdxt.Kpgl.EnumList.UserIdentity.DeputyEnchou)
            {
                context.Response.Write(
" no right! " );
            }

            
// ID为文档的主键,如果ID不为空,则更新数据,否则新建一条记录
             string  ID  =  context.Request.Params[ " ID " ];
            
if  (context.Request.Files.Count  >   0 )
            {
                HttpPostedFile upPhoto 
=  context.Request.Files[ 0 ];
                
int  upPhotoLength  =  upPhoto.ContentLength;
                
byte [] PhotoArray  =   new  Byte[upPhotoLength];
                Stream PhotoStream 
=  upPhoto.InputStream;
                PhotoStream.Read(PhotoArray, 
0 , upPhotoLength);  // 这些编码是把文件转换成二进制的文件
                 string  Newfilename  =  Super.Wdxt.Kpgl.Common.Utils.NewName( "" ) + " _ " + Super.Wdxt.Kpgl.Common.getUserBasicInfo.UserId() + " .doc " ;
                
string  path  =  System.Configuration.ConfigurationManager.AppSettings[ " DocumentsPath " ].ToString();
                
if  ( ! File.Exists(Newfilename))
                {
                    FileStream fs 
=   new  System.IO.FileStream(path + Newfilename, System.IO.FileMode.CreateNew, System.IO.FileAccess.Write);
                    fs.Write(PhotoArray, 
0 , PhotoArray.Length);
                    fs.Close();
                }
                
string  state  =  context.Request.Params[ " state " ];
                
bool  flag = Super.Wdxt.Kpgl.BLL.AssessdocumentsBLL.Edit(ID, Newfilename, state);
                
if  (flag)
                {
                    context.Response.Write(
" succeed " );
                  }
                
else
                {
                    context.Response.Write(
" failed " );
                }
               context.Response.End();

                
// -------------------------------------------
            }
            
else
            {
                context.Response.Write(
" No File Upload! " );
            }
        }

        
public   bool  IsReusable
        {
            
get
            {
                
return   false ;
            }
        }
    }

 

  相关实例: 1。ex1 

                2.ex2

 

 

 

 

 

转载于:https://www.cnblogs.com/dooom/archive/2010/07/03/1770450.html

作为ASP.NET项目的开发者,在应对用户的Word、Excel文档时,您是否迫切希望Visual Studio工具箱里能有现成的Word、Excel标准ASP.NET控件可用就太好了?现在梦想已经成真,想在网页上显示编辑Word、Excel文档并且调用微软Office的强大功能,就直接从工具箱拖动一个PageOffice控件到Web页面上就可以了,就和使用常用的TextBox控件一样简单方便。 PageOffice是什么? PageOffice for ASP.NET是一款非常优秀的专业的集成微软OFFICE功能的ASP.NET控件平台,能够帮助Web开发人员轻松实现在网页中嵌入运行微软Office的特殊功能。PageOffice把微软复杂的Office编程接口(COM API) 有效地整合于 ASP.NET 环境,通过简化的.NET类库接口为开发者提供了在Web项目里获得Office众多强大功能的机会,并且能够同时利用来自 .NET Framework 的开发效率和软件功能。 集成PageOffice不但能够实现在线编辑、保存真正的Office文档,而且还可以轻松实现Word、Excel文档的动态数据填充、格式控制和用户输入提交的高级复杂功能。只要集成PageOffice,您将能够轻松应对在Web项目开发中遇见的绝大部分和Office文档有关的功能和难题。您只需把精力集中在项目业务逻辑上,Office技术问题就交给PageOffice实现解决吧。 PageOffice除了提供Word/Excel动态数据填充,格式控制,Word/Excel用户输入提交,Word/Excel/PowerPoint/WPS等Office文档的在线打开、只读浏览、编辑、保存等功能外,还给在线协同办公提供了强大的支持功能:可编辑区域控制,强制痕迹保留,并发编辑控制,手写批注,手写签名,圈阅签字,电子印章、动态模板套红等。 专业的MSDN风格的开发帮助,上百的示例代码,确保您的开发效率事半功倍。 运行环境 服务器端:Windows2003、Windows2008、Windows2012及Windows XP、Windows7、Windows8等(包括64位版本);.Netframework2.0及以上版本。 客户端:Windows XP、Windows Vista、Windows7、Windows8及以上版本(包括64位版本);Microsoft Office2003、2007、2010、2013;IE 6.0、7.0、8.0、9.0、10.0。 名称:PageOffice for ASP.NET专业版 2.0 下载:http://www.zhuozhengsoft.com/down/PageOffice_ASP.NET.rar 大小:13.8MB 版本:专业版 2.0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值