在OA系统中,有时会出现在线打开word文档实现指定用户只能编辑指定区域的需求。这就需要我们学习微软activex控件的使用了。但是这需要开发者具备将activex控件集成到Java环境的能力。对于大部分Java开发工程师来说,仅仅解决单一的功能就要掌握activex控件,未免学习成本太大。
所以我们今天就要介绍一个中间件技术——pageoffice,此中间件技术已经将web系统中操作office文档的大部分功能整合完毕,大家只需要关注自己web系统的业务逻辑即可,学习成本低,且功能很丰富。下面我们来实战用pageoffice实现一下用Java在线打开word文档实现指定用户只能编辑指定区域的功能。
首先模拟一下A用户登录打开文件
此时文档中能编辑的位置只有红框里指定的位置能够编辑录入数据,不能编辑其他位置的内容。
下面再以B用户登录打开文件
此时B用户只能编辑下面指定的位置,其他位置的内容不可编辑。
去刚才下载的集成文件中找到lib,将里面的内容放在项目web-inf的lib中引入jar包,然后将web.xml的pageoffice配置引入到自己项目的wb.xml中
写a标签之前先引入pageoffice需要的js文件
然后添加a标签
控制不同用户编辑Word文档中不同的区域
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
登录页面
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@page
import="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);
%>
返回登录页
当前用户:
<%=userName%>
<%=poCtrl.getHtmlCode("PageOfficeCtrl1")%>
新建一个名为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的书签。
刚开始接触pageoffice的话,也可以看视频快速上手http://www.zhuozhengsoft.com/Technical/
如有侵权,请联系博主