注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

天涯倦客的博客

祝福你朋友永远快乐!

 
 
 

日志

 
 

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

2017-05-03 11:04:38|  分类: asp.net |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

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

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

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

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

js处理:

Asp.net 使用weboffice实现Word在线编辑 - 海里的贝壳 - 天涯倦客的博客
复制代码
 

  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文件。

 

Asp.net 使用weboffice实现Word在线编辑 - 海里的贝壳 - 天涯倦客的博客
复制代码
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

  评论这张
 
阅读(27)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017