文档章节

java 实现不同用户编辑 word , excel 中的不同区域

q
 qingxue636
发布于 2019/12/13 16:27
字数 1047
阅读 10
收藏 0

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:演示效果

 

 

本文转载自:https://my.oschina.net/u/3507515/blog/2249495

q
粉丝 0
博文 17
码字总数 2761
作品 0
私信 提问
GrapeCity Documents for Excel 文档 API 组件 V2.2 版本发布

GrapeCity Documents for Excel 文档 API 组件 V2.2 正式发布,本次新版本包含诸多重量级产品功能,如:将带有形状的电子表格导出为 PDF、控制分页和电子表格内容、将 Excel 电子表格的特定页...

葡萄城技术团队
2019/07/16
594
0
GrapeCity Documents for Excel 文档API组件 V2.2 新特性介绍

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 https://blog.csdn.net/powertoolsteam/article/details/96150843 GrapeCity Documents for ...

powertoolsteam
2019/07/16
0
0
使用卓正PageOffice--动态填充Word文档

对PageOffice有基本了解的用户可能知道,PageOffice可以给word文档的指定位置进行填充,这里我们所说的指定位置在PageOffice的专业术语里面叫做“数据区域”,模板数据区域的具体制作和详细描述...

山里的红杏
2018/09/11
128
0
使用 Apache POI 和 OpenOffice API 在 Linux 中统计 Office 文档的页数

简介: 在实际的项目开发中经常会遇到需要在不同的操作系统平台上统计 Microsoft Office 系列文档页数的要求。Apache POI 提供了一套完整的用于访问微软格式文档的 Java API。但是 Apache P...

IBMdW
2012/10/26
2.1K
0
Java集成pageoffice导出Excel

一、需求介绍   当前B/S模式已成为应用开发的主流,而在开发企业办公系统的过程中,常常有客户这样子要求:把系统数据库中的数据导出到Excel,用户查看报表时直接用Excel打开。或者是:用户...

qianxi
01/15
82
0

没有更多内容

加载失败,请刷新页面

加载更多

LeetCode.6.Z字形变换

将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。 比如输入字符串为 "LEETCODEISHIRING" 行数为 3 时,排列如下: L C I R E T O E S I I G E D H N 之后,你的输出需...

tedzheng
16分钟前
21
0
使用postman测试接口,解决Session共享问题

问题: 在做登录模块时,使用Postman做接口测试,发现session不能共享问题:第一次请求将系统随机生成验证码放入Session中,第二次请求想要获取系统生成的验证码,但是取到的值为null,因此无...

code-ortaerc
48分钟前
67
0
从Maven存储库获取源JAR

有谁知道您是否可以在Maven存储库中找到源JAR? #1楼 如果您使用的是eclipse,则还可以打开“首选项”>“ Maven”并选择“下载Artifact源”,这将使pom.xml完整无缺,并将源或Java文档(如果...

技术盛宴
56分钟前
60
0
CentOS 7 SSH连接超时自动断开解决方案

用SSH登录到Linux的时候,由于默认的连接超时时间很短,经常断开。可以修改配置文件调整服务器端向客户端请求消息的时间间隔,解决自动断开的问题。 编辑/etc/ssh/sshd_config 找到 #ClientA...

matrixchan
58分钟前
53
0
非典期间的一段回忆

最近的新型肺炎病毒甚嚣尘上,已经成了大众最瞩目的事件,整个国家层面反应也算迅速,毕竟我们是一个十几亿人口的国家。 公众号的读者和我分享了一个一段03年非典期间的故事,感慨颇深。经原...

王知无
今天
65
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部