Java在線打開word文檔實現指定用戶只能編輯指定區域

前言:

在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"%>
<%@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);

%>
<!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/

如有侵權,請聯繫博主

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章