前言:

在OA系统中,有时会出现在线打开word文档实现指定用户只能编辑指定区域的需求。这就需要我们学习微软activex控件的使用了。但是这需要开发者具备将activex控件集成到Java环境的能力。对于大部分Java开发工程师来说,仅仅解决单一的功能就要掌握activex控件,未免学习成本太大。

所以我们今天就要介绍一个中间件技术——pageoffice,此中间件技术已经将web系统中操作office文档的大部分功能整合完毕,大家只需要关注自己web系统的业务逻辑即可,学习成本低,且功能很丰富。下面我们来实战用pageoffice实现一下用Java在线打开word文档实现指定用户只能编辑指定区域的功能。

先看效果:

首先模拟一下A用户登录打开文件

此时文档中能编辑的位置只有红框里指定的位置能够编辑录入数据,不能编辑其他位置的内容。

下面再以B用户登录打开文件

此时B用户只能编辑下面指定的位置,其他位置的内容不可编辑。

部署步骤(只需5步)

1.官网http://www.zhuozhengsoft.com/dowm/下载集成文件,引入jar包,配置web.xml

去刚才下载的集成文件中找到lib,将里面的内容放在项目web-inf的lib中引入jar包,然后将web.xml的pageoffice配置引入到自己项目的wb.xml中

2.在父页面aaa.jsp(需要打开文档的页面)放一个a标签或者button

写a标签之前先引入pageoffice需要的js文件

<script type="text/javascript" src="/jquery.min.js"></script>
<script type="text/javascript" src="/pageoffice.js" id="po_js_main"></script>

然后添加a标签

<a href="javascript:POBrowser.openWindowModeless('Default.jsp' , 'width=1200px;height=800px;');">控制不同用户编辑Word文档中不同的区域</a>

3.在父页面aaa.jsp同级目录下创建一个名为Default.jsp的文件

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><title>登录页面</title>
</head>
<body><form id="form1"  action="SetDataRegionByUserName.jsp" method="post"> <div style=" text-align:center;"><div>请选择登录用户:</div><br /><select name="userName"><option selected="selected" value="zhangsan">A部门经理</option><option  value="lisi">B部门经理</option></select><br /><br /><input type="submit"  value="打开文件" /><br /><br /><div style=" color:Red;">不同的用户登录后,在文档中可以编辑的区域不同</div></div></form>
</body></html>

4.在父页面aaa.jsp同级目录下创建一个名为SetDataRegionByUserName.jsp的文件

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@pageimport="com.zhuozhengsoft.pageoffice.*,com.zhuozhengsoft.pageoffice.wordwriter.*"%>
<%String userName = request.getParameter("userName");//***************************卓正PageOffice组件的使用********************************WordDocument doc = new WordDocument();DataRegion dA1 = doc.openDataRegion("PO_A_pro1");DataRegion dB1 = doc.openDataRegion("PO_B_pro1");//根据登录用户名设置数据区域可编辑性//A部门经理登录后if (userName.equals("zhangsan")) {userName = "A部门经理";dA1.setEditing(true);dB1.setEditing(false);}//B部门经理登录后else {userName = "B部门经理";dB1.setEditing(true);dA1.setEditing(false);}PageOfficeCtrl poCtrl = new PageOfficeCtrl(request);poCtrl.setWriter(doc);//设置服务器页面poCtrl.setServerPage(request.getContextPath()+"/poserver.zz"); //此行必须//设置文档打开方式poCtrl.webOpen("test.doc", OpenModeType.docSubmitForm, userName);%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title></title></head><body><div id="content"><div id="textcontent" style="width: 1000px; height: 800px;"><div class="flow4"><a href="Default.jsp"> 返回登录页</a><strong>当前用户:</strong><span style="color: Red;"><%=userName%></span></div><!--**************   卓正 PageOffice组件 ************************--><%=poCtrl.getHtmlCode("PageOfficeCtrl1")%></div></div></body>
</html>

5.新建文件

新建一个名为test.doc的word文件(如果新建的是docx文件就将第三步的poCtrl.webOpen("test.doc", OpenModeType.docSubmitForm, userName);代码改为poCtrl.webOpen("test.docx", OpenModeType.docSubmitForm, userName);

将新建的test.doc文件放在SetDataRegionByUserName.jsp同级目录下。

本地打开test.doc文件,随意输入一段文字,然后选中一部分内容(只让A用户编辑的区域)。

在选中的情况下,点击菜单栏插入-书签--书签名设置为PO_A_pro1--点击添加(书签名称格式为PO_开头,比如自己设置的书签名为PO_T001,那么记得将第三步中的DataRegion dA1 = doc.openDataRegion("PO_A_pro1");改为 DataRegion dA1 = doc.openDataRegion("PO_T001");   )。

然后同样的步骤选中另外一部分内容(只让B用户编辑的区域),在选中的情况下添加一个PO_B_pro1的书签。

然后启动项目直接访问aaa.jsp点击链接.此时会提示安装插件,点击安装成功后提示注册,填写相关信息,填写注册码Q37LN-W8NI-KFSQ-LEY3Y就可以打开文档.

注意:如果需要更丰富的功能,可以去pageoffice官网下载示例代码直接将samples4文件夹拷贝到Tomcat的webapps下,启动Tomcat,浏览器访问http://localhost:8080/Samples4/index.html,查看示例中的下面一个链接,直接看samples4文件夹下SetDrByUserWord文件夹里面的代码.

刚开始接触pageoffice的话,也可以看视频快速上手http://www.zhuozhengsoft.com/Technical/

如有侵权,请联系博主

Java在线打开word文档实现指定用户只能编辑指定区域相关推荐

  1. Java在线打开word文档实现手写批注

    前言: 有些OA系统会有用户在线对word文档添加手写批注的需求,这样的需求看似不好实现,其实是可以实现的. 但是这需要开发者具备将activex控件集成到Java环境的能力.对于大部分Java开发工 ...

  2. Java实现在线打开word文档并强制留痕/留下痕迹

    前言: 在OA系统中,时不时的都会伴随着文档流转过程.比如有的系统中会有领导审批的流程,那么在A领导审批完成后,他的审批痕迹能不能强制保留下来,以供下一步处理文档的专员清晰地参考呢? 我们知道,在本地 ...

  3. java打开pdf文件_[原创]java在线打开PDF文档

    步骤一:(涉及到的工具) 访问:http://www.zhuozhengsoft.com/dowm/,从官网下载PageOffice for Java. 步骤二:(配置工程) 1. 解压PageOff ...

  4. java如何打开word文档_如何在Java中打开和操作Word文档/模板?

    我知道自从我发布这个问题以来已经很长时间了,我说我会在完成后发布我的解决方案. 所以在这里. 我希望有一天它会帮助某人. 这是一个完整的工作类,您只需将它放在应用程序中,并将TEMPLATE_DIRE ...

  5. Java打开word文档并执行指定宏命令

    前言: 我们都知道word中有一个宏功能,那我们能不能实现用Java语言在线打开word文档的同时,将指定宏代码运行呢?这是可以的.但是这需要开发者具备将activex控件集成到Java环境的能力.对 ...

  6. java springboot 写入word文档(word模版: 文字,表格,图片)

    文章目录 前言: 一共找了两个方案,第一个使用比较方便. 方案一 poi-tl 1.1 依赖 1.2 使用 1.2.1 工具类 (先要有模版) 1.2.2 使用 1.3 word模版的创建 方案二 f ...

  7. Word处理控件Aspose.Words功能演示:使用Java合并MS Word文档

    在各种情况下,可能需要合并多个MS Word文档,例如减少文档数量,在单个文件中保留相似种类的内容(即发票)等.许多在线应用程序使您可以合并两个或多个MS Word文档但是,您可能需要在自己的Web或 ...

  8. 关于用java编写生成word文档,动态添加数据到word文档的一些心得

    关于用java编写生成word文档,动态添加数据到word文档的一些心得,经过翻阅了无数的有用的和无用的资料以后,总算找到了一种靠谱的方法 1.概述 经过反反复复的查阅资料,总算找到了一个靠谱的生成w ...

  9. 【Java实现导出Word文档功能 XDocReport +FreeMarker】

    Java实现导出Word文档功能(XDocReport +FreeMarker) 前言 在日常的开发工作中,我们时常会遇到导出Word文档报表的需求,比如公司的财务报表.医院的患者统计报表.电商平台的 ...

  10. Word处理控件Aspose.Words功能演示:从 Java 中的 Word 文档中提取图像

    图像通常用于表示 Word 文档中的重要信息.在文本旁边包含图像使内容更具吸引力.在某些情况下,您可能需要以编程方式提取嵌入在 Word 文档中的图像.为此,本文介绍了如何使用 Java 从 Word ...

最新文章

  1. Freebsd10上部署open*** 服务器
  2. SAP UI5应用和Hybris Commerce的国际化(internationalization)支持
  3. 震惊!快速幂怎么编?省一说暴力,银牌说递归,国集听完笑了
  4. 【ZOJ - 3870】Team Formation(异或,思维)
  5. python3 读取文本文件_Python3 读写文件
  6. 团体程序设计天梯赛-练习集-L1-046. 整除光棍
  7. cmd使用SBT构建scala项目
  8. 实现全排列的另一种方法(续)
  9. 图:杭州中级人民法院演讲比赛于9月29日圆满结束.其主题图片展示。
  10. 【TSP】基于matlab GUI改进的遗传算法求解旅行商问题【含Matlab源码 926期】
  11. LibXML2不支持中文补遗
  12. 值得收藏的30道Python练手题(附详细答案)
  13. G711音频文件播放器
  14. android fake gps,假GPS定位(Fake GPS Position) v4.5 安卓版
  15. office表格怎么冻结前两行_怎样冻结表格前两行(excel2003中怎么冻结行列标题)
  16. linux char大小,Linux基本数据类型大小——int,char,long int,long long int
  17. java 动态代理相关记录
  18. HDU6130-Kolakoski
  19. Nginx+Lua+Redis实现广告缓存
  20. 椭圆机和跑步机哪个更好

热门文章

  1. 图片转化成矩阵,灰度处理,黑白对调--ByMatlab
  2. Python将多个excel文件合并为一个文件
  3. matlab算kdj指标,通达信带注释的KDJ指标公式
  4. python数据导入spss_Python/Excel/SPSS/SQL数据处理方法比较之1 - 数据导入
  5. Android 真实简历
  6. 计算机无法设置ip地址,如何解决Windows8无法设置静态IP地址的问题
  7. Java高性能的编程技巧
  8. python超简易入门笔记版(其二)
  9. 笔记本计算机bios设置,笔记本怎么进入bios设置【方法步骤】
  10. 索尼计算机bios正确设置,索尼vaio笔记本如何进入bios设置_索尼笔记本进入bios图解...