1:需求
为了提高效率,希望多人可以同时编辑同一个文档,但是用户同时打开一个文件,会出现编辑保存文件相互覆盖的问题。所以pageoffice 提供了不同用户编辑不同区域的方法
2. 页面代码
(1)web.xml
<!-- PageOffice Begin -->
<servlet>
<servlet-name>poserver</servlet-name>
<servlet-class>com.zhuozhengsoft.pageoffice.poserver.Server</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>poserver</servlet-name>
<url-pattern>/poserver.zz</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>poserver</servlet-name>
<url-pattern>/sealsetup.exe</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>poserver</servlet-name>
<url-pattern>/posetup.exe</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>poserver</servlet-name>
<url-pattern>/pageoffice.js</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>poserver</servlet-name>
<url-pattern>/jquery.min.js</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>poserver</servlet-name>
<url-pattern>/pobstyle.css</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>adminseal</servlet-name>
<servlet-class>com.zhuozhengsoft.pageoffice.poserver.AdminSeal</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>adminseal</servlet-name>
<url-pattern>/adminseal.zz</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>adminseal</servlet-name>
<url-pattern>/loginseal.zz</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>adminseal</servlet-name>
<url-pattern>/sealimage.zz</url-pattern>
</servlet-mapping>
<mime-mapping>
<extension>mht</extension>
<mime-type>message/rfc822</mime-type>
</mime-mapping>
<context-param>
<param-name>adminseal-password</param-name>
<param-value>111111</param-value>
</context-param>
<!-- PageOffice End -->
(2)index.jsp页面
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<script type="text/javascript"
src="<%=request.getContextPath()%>/jquery.min.js"></script>
<script type="text/javascript"
src="<%=request.getContextPath()%>/pageoffice.js" id="po_js_main"></script>
</head>
<body>
<form id="form1" action="day5/SetWordDataRegionByUserName.jsp" method="post">
<div style="text-align: center;">
<div>
请选择登录用户:
</div>
<br />
<select name="userName">
<option selected="selected" value="zhangsan">
甲客户:zhangsan
</option>
<option value="lisi">
乙客户:lisi
</option>
</select>
<br />
<br />
<input type="submit" value="打开文件" />
<br />
<br />
<div style="color: Red;">
不同的用户登录后,在word文档中可以编辑的区域不同
</div>
</div>
</form>
<br /><br /><br /><br /><br /><br />
<form id="form2" action="day5/SetExcelDataRegionByUserName.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;">
不同的用户登录后,在excel文档中可以编辑的单元格区域不同
</div>
</div>
</form>
</body>
</html>
(3):SetWordDataRegionByUserName.jsp
<%@ 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 dTitle = doc.openDataRegion("PO_title");
//给数据区域赋值
dTitle.setValue("某公司第二季度产量报表");
//设置数据区域可编辑性
dTitle.setEditing(false);//数据区域不可编辑
DataRegion dA1 = doc.openDataRegion("PO_A_pro1");
DataRegion dA2 = doc.openDataRegion("PO_A_pro2");
DataRegion dB1 = doc.openDataRegion("PO_B_pro1");
DataRegion dB2 = doc.openDataRegion("PO_B_pro2");
//根据登录用户名设置数据区域可编辑性
//A部门经理登录后
if (userName.equals("zhangsan")) {
userName = "A部门经理";
dA1.setEditing(true);
dA2.setEditing(true);
dB1.setEditing(false);
dB2.setEditing(false);
}
//B部门经理登录后
else {
userName = "B部门经理";
dB1.setEditing(true);
dB2.setEditing(true);
dA1.setEditing(false);
dA2.setEditing(false);
}
PageOfficeCtrl poCtrl = new PageOfficeCtrl(request);
poCtrl.setWriter(doc);
//设置服务器页面
poCtrl.setServerPage(request.getContextPath()+"/poserver.zz"); //此行必须
poCtrl.setMenubar(false);
//设置文档打开方式
poCtrl.webOpen("doc/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=gb2312" />
<title></title>
<link href="images/csstg.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="content">
<div id="textcontent" style="width: 1000px; height: 800px;">
<div class="flow4">
<a href="index.jsp"> 返回登录页</a>
<strong>当前用户:</strong>
<span style="color: Red;"><%=userName%></span>
</div>
<!--************** 卓正 PageOffice组件 ************************-->
<%=poCtrl.getHtmlCode("PageOfficeCtrl1")%>
</div>
</div>
</body>
</html>
(4)SetExcelDataRegionByUserName.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@page import="com.zhuozhengsoft.pageoffice.*, com.zhuozhengsoft.pageoffice.excelwriter.*"%>
<%
String userName=request.getParameter("userName");
//***************************卓正PageOffice组件的使用********************************
PageOfficeCtrl poCtrl = new PageOfficeCtrl(request);
Workbook wb = new Workbook();
Sheet sheet = wb.openSheet("Sheet1");
Table tableA = sheet.openTable("C4:D6");
Table tableB = sheet.openTable("C7:D9");
tableA.setSubmitName("tableA");
tableB.setSubmitName("tableB");
//根据登录用户名设置数据区域可编辑性
String strInfo = "";
//A部门经理登录后
if (userName.equals("zhangsan"))
{
strInfo = "A部门经理,所以只能编辑A部门的产品数据";
sheet.openCell("C5").setFormula("C4+D4");
tableA.setReadOnly(false);
tableB.setReadOnly(true);
}
//B部门经理登录后
else
{
strInfo = "B部门经理,所以只能编辑B部门的产品数据";
tableA.setReadOnly(true);
tableB.setReadOnly(false);
}
poCtrl.setWriter(wb);
poCtrl.setServerPage(request.getContextPath()+"/poserver.zz"); //此行必须
poCtrl.webOpen("doc/test.xls",OpenModeType.xlsSubmitForm, userName);
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title></title>
<link href="images/csstg.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="content">
<div id="textcontent" style="width: 1000px; height: 800px;">
<div class="flow4">
<a href="index.jsp"> 返回登录页</a>
<strong>当前用户:</strong>
<span style="color: Red;"><%=strInfo %></span>
</div>
<!--************** 卓正 PageOffice组件 ************************-->
<%=poCtrl.getHtmlCode("PageOfficeCtrl1")%>
</div>
</div>
</body>
</html>
3:演示效果