文档章节

项目常用工具类整理(三)--ZSOffice/PageOffice的引用

Pig-man
 Pig-man
发布于 2016/05/14 16:10
字数 1227
阅读 1575
收藏 13

        在项目中经常会遇到生成一些excel或是word的文档后用于直接打印这种情况,尤其是电子签章方面,卓正office提供了一个很强大的应用。我就拿excel来生成报表这种类型来介绍一下吧。

1、导入pageoffice.jar,同时也不要忘了poi的相关jar包

2、下面从前台的一个请求出发,到显示出该excel页面的完整过程,需要注解的地方我会详细的列出来

a:通过前天一个url请求(具体的路径参数我已经给删除了)

function onClick(event, treeId, treeNode, clickFlag) {
		$('#dialogIframe')[0].src = '${contextPath}zsOffice/view';
	}

b:然后码出对应的controller层的代码,返回数据list和pageoffice的显示模式 ,指向要跳转的的jsp页面。

ModelAndView mav = new ModelAndView("/xxckywh/Excel");
		mav.addObject("List", List);//数据list串
		mav.addObject("mode", mode);//mode会在后文提及,指的是打印还是下载
		return mav;

c:然后我码出对应的"/xxckywh/Excel"的jsp代码,还有他引入的zsExcel.jsp,以及涉及到的"/resources/template/jlqk.xls"excle文件截图

<%@ page language="java" contentType="text/html; charset=gb2312" pageEncoding="GB2312"
	import="java.util.List,SOAOfficeX.*"%>
<%request.setCharacterEncoding("gb2312");%>
<jsp:useBean id="user" scope="session" class="com.kkk.domain.User"/>
<%
ZSExcelUtil zsExcelUtil = new ZSExcelUtil();
ExcelResponse SOAExcel = zsExcelUtil.getSOAExcel();
ExcelResSheet sheet;
zsExcelUtil.openSheet("jlqk");//与你打开的excel中的sheet表单名相同
sheet = zsExcelUtil.getSheet();
	
	sheet.useRangeFormat("A5:E5");//循环区间为A-E
	int line = 5;//从5行开始循环使用
	String sj, dj, sjmc, dw, yj;
	List<Jlqk> jlqkList = (List<Jlqk>)request.getAttribute("List");//处理后台传过来的List
	for(Jlqk jlqk : jlqkList){
		sj = SysTools.formatDate(jlqk.getSjsj(), "date");
		if (!Tools.isEmpty(sj)) {
			//sj = sj.substring(0, 4) + "年" + sj.substring(5, 7) + "月";
			sj = sj.substring(0, 4) + sj.substring(5, 7)  ;
		} 
		dj = jlqk.getDj();
		sjmc = jlqk.getSjmc();
		dw = jlqk.getSydw();
		yj = jlqk.getSjsy();
		
		sheet.openCell("A"+line).setValue(sj);
		sheet.openCell("B"+line).setValue(dj);
		sheet.openCell("C"+line).setValue(sjmc);
		sheet.openCell("D"+line).setValue(dw);
		sheet.openCell("E"+line++).setValue(yj);
	}
	sheet.endRangeFormat();//循环结束

	SOAOfficeCtrl SOACtrl = zsExcelUtil.getSOACtrl(pageContext, SOAExcel);
	SOACtrl.ServerURL = "/soaservlet/soaserv.do";
	SOACtrl.webOpen(request.getContextPath() + "/resources/template/jlqk.xls", 0, user.getUsername(), "Excel.Sheet");
%>

<%@include file="zsExcel.jsp" %>

下面zsExcel.jsp,其中规范了excel调用起来后的工具

<%@ page language="java" contentType="text/html; charset=gb2312" pageEncoding="GB2312"%>
<%request.setCharacterEncoding("gb2312");%>

<!DOCTYPE html>
<html>
<head>
<title></title>
<script type="text/javascript" src="${pageContext.request.contextPath}/resources/lib/easyui/jquery.min.js"></script>
</head>
<body bgColor="#ffffff" leftMargin="0" topMargin="0" onLoad="soaOpen();window.focus();">
	<script>
		function soaOpen() { 
			try {
				SOAOfficeCtrl.Toolbars = false;
				SOAOfficeCtrl.Menubar = false;	
			
				SOAOfficeCtrl.AppendToolButton(1, "打印", 6);
				SOAOfficeCtrl.AppendToolButton(2, "打印预览", 7);
				SOAOfficeCtrl.AppendToolButton(3, "页面设置", 0);
				SOAOfficeCtrl.AppendToolButton(4, "-");
				SOAOfficeCtrl.AppendToolButton(5, "另存到本机", 1);
				SOAOfficeCtrl.AppendToolButton(6, "-");
				//SOAOfficeCtrl.AppendToolButton(7, "全屏/还原", 4);
// 				SOAOfficeCtrl.ServerURL = "/soaservlet/soaserv.do";
// 				SOAOfficeCtrl.WebOpen("OpenByServerSide");
				return true;
			} catch (e) { 
				var errorStr = e.description;
				if (errorStr.indexOf("为空或不是对象") > 0) {
					alert("本机尚未安装SOAOffice 客户端控件,请安装浏览器上方黄色提示条或弹出提示框中的SOAOffice 客户端控件。");
				} else {
					alert(erroStr);
				}
				return false; 
			} 
		}
		
		function handelRequest() {
			<%
				String mode = (String)request.getAttribute("mode");
			%>
			var mode = '<%=mode%>';
			//alert('mode:' + mode);
			
			if (mode == 'print') {
				SOAOfficeCtrl.PrintOut();
			} else if (mode == 'download') {
				//parent.$('#downloadFrame')[0].src = '${pageContext.request.contextPath}/zsOffice/downloadDoc';
				SOAOfficeCtrl.ShowDialog(3);
			}
		}
	</script>
	<script language="Javascript" event="OnInit()" for="SOAOfficeCtrl">
		// 控件打开文档前触发,用来初始化界面样式
	</script>
	<script language="Javascript" event="OnDocumentOpened(str, obj)" for="SOAOfficeCtrl">
		// 控件打开文档后立即触发,添加自定义菜单,自定义工具栏,禁止打印,禁止另存,禁止保存等等
		SOAOfficeCtrl.Toolbars = false;
		SOAOfficeCtrl.Menubar = false;	
		SOAOfficeCtrl.AppendToolButton(1, "打印", 6);
		SOAOfficeCtrl.AppendToolButton(2, "打印预览", 7);
		SOAOfficeCtrl.AppendToolButton(3, "页面设置", 0);
		SOAOfficeCtrl.AppendToolButton(4, "-");
		SOAOfficeCtrl.AppendToolButton(5, "另存到本机", 1);
		SOAOfficeCtrl.AppendToolButton(6, "-");
		SOAOfficeCtrl.AppendToolButton(7, "全屏/还原", 4);
		
		handelRequest();
	</script>
	<script language="Javascript" event="OnDocumentClosed()" for="SOAOfficeCtrl">
	</script>
	<script language="Javascript" event="OnUserMenuClick(index, caption)" for="SOAOfficeCtrl">
		// 添加自定义菜单项事件响应
	</script>
	<script language="Javascript" event="OnCustomToolBarClick(index, caption)" for="SOAOfficeCtrl">
		// 添加自定义工具栏按钮事件响应
		if(index == 1) ShowDialog(4);
		if(index == 2) PrintPreview();
		if(index == 3) ShowDialog(5);
		if(index == 5) ShowDialog(2);
		if(index == 7) FullScreen = !FullScreen;
	</script>
	<table cellSpacing="0" cellPadding="0" width="100%" border="0">
		<tbody> 
			<tr valign="top" align="center">
				<td height="685">
					<span id="WEBWORD_object">
					<!-- 引用控件的代码 -->
					<object id="SOAOfficeCtrl" codeBase="../../lib/ZSOffice.ocx#version=2,0,0,1" height="100%" width="100%" classid="clsid:AD06827C-D92F-4648-B880-138AF11E8A13" VIEWASTEXT>
						<%--<param name="MainStyle" value="2">
						<param name="BorderStyle" value="0">--%>
						<span STYLE="color:red">本机尚未安装卓正OFFICE组件,请安装浏览器上方黄色提示条或弹出提示框中的卓正OFFICE组件。</span>
					</object>
					</span>
				</td>
			</tr>
		</tbody>
	</table>
</body>
</html>

excel截图,注意我标红位置和代码中的对应位置

在jsp中需要导入的excel工具类ZSExcelUtil.java

import javax.servlet.jsp.PageContext;

import SOAOfficeX.*;

public class ZSExcelUtil {
    private ExcelResponse SOAExcel;
    private ExcelResSheet sheet;
    private SOAOfficeCtrl SOACtrl;
    
    public ZSExcelUtil() {
    	try {
	    	SOAExcel = new ExcelResponse();
	    	SOAExcel.DisableSheetDoubleClick = true;
	    	SOAExcel.DisableSheetRightClick = true;
	    	SOAExcel.DisableSheetSelection = true;
    	} catch (Exception e) {
    		e.printStackTrace();
    	}
    }

    public ExcelResSheet getSheet() {
        return sheet;
    }

    public void setSheet(ExcelResSheet sheet) {
        this.sheet = sheet;
    }

    public ExcelResponse getSOAExcel() {
        return SOAExcel;
    }

    public void setSOAExcel(ExcelResponse excel) {
        SOAExcel = excel;
    }

    public SOAOfficeCtrl getSOACtrl(PageContext pageContext,ExcelResponse SOAExcel) {
		try {
		    SOACtrl = new SOAOfficeCtrl(pageContext);
		    SOACtrl.Server = pageContext.getRequest().getServerName();
		    SOACtrl.ServerPort = "4357";	//服务端口
		    SOACtrl.MainStyle = 2;
		    SOACtrl.Toolbars = false; 
		    SOACtrl.Menubar = false;
		    SOACtrl.Caption = "";
		    SOACtrl.Titlebar = false;	//隐藏、显示标题栏
		    SOACtrl.assign(SOAExcel); 
		} catch(Exception e) {
		    e.printStackTrace();	
		}
        return SOACtrl;
    }

    public void setSOACtrl(SOAOfficeCtrl ctrl) {
        SOACtrl = ctrl;
    }
    
    public void openSheet(String sheetName) {
    	try {
			sheet = SOAExcel.openSheet(sheetName);
		} catch (Exception e) {
			e.printStackTrace();
		}
    	sheet.setFormMode(true);
    }
}

 

这篇日志写的比较笼统,应该会有疏漏的地方,如果你作为教程来看的话,应该有很多地方需要你自己去探索,你也可以联系我。

 

© 著作权归作者所有

共有 人打赏支持
Pig-man
粉丝 19
博文 62
码字总数 47800
作品 0
青浦
程序员
PageOffice,word常用接口对象--Table类

在做项目的过程中,经常会遇到要把报表导出到Word文件中再打印的情况,而既然是做报表那就免不了要用到表格,即需要在Word文件中插入table。因此,PageOffice开发平台中就添加了此功能。 Ta...

山里的红杏
09/10
0
0
ASP.NET---PageOffice集成说明

PageOffice集成说明 运行PageOffice产品的演示程序: 访问PageOffice官网:http://www.zhuozhengsoft.com/ ,下载PageOffice产品开发包; 解压PageOffice开发包,双击运行Setup.exe安装服务器...

山里的红杏
09/12
0
0
java调用PageOffice生成word

一、在开发OA办公或与文档相关的Web系统中,难免会遇到动态生成word文档的需求,为了解决工作中遇到导出word文档的需求,前一段时间上网找了一些资料,在word导出这方面有很多工具可以使用,...

山里的红杏
05/08
0
0
PageOffice如何显示/隐藏Word文档中的标尺

在线打开并使用Word文档时,我们经常会需要使用打开的Word文档中,顶部的标尺来设置页面的边距、对齐位置等。这一操作,可以通过工具栏中“视图”→“标尺”选项的是否勾选来决定是否显示标尺...

yert
2013/04/25
0
0
PageOffice与Apache POI的区别

相同之处: 都可以对MS Office文档进行填充数据,转HTML、PDF等。 服务器端都不需要装MS Office办公软件。 都支持windows、linux、unix服务器。 2. 不同之处: PageOffice是客户端生成文档的...

山里的红杏
09/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

区块链100讲:盘点那些常用的加密算法原理

在开发过程中,常常用到各种加密方法和算法,本文总结了几种常用加密方法的原理。 1 对称加密 原理:加密和解密数据使用同一个密钥,适合对大量数据进行加解密 安全性:关键是密钥的保存方式...

HiBlock
24分钟前
0
0
zookeeper基本常识

一、Zookeeper基础知识 1 zookeeper是一个类似hdfs的树形文件结构,zookeeper可以用来保证数据在(zk)集群之间的数据的事务性一致。2 zookeeper有watch事件,是一次性触发的,当watch监视的数...

啃不动地大坚果
29分钟前
0
0
Forrester企业级容器平台权威排行出炉,小初创Rancher缘何成为领导者?

全球著名的调研机构Forrester Research近日发布了《The Forrester New Wave: Enterprise Container Platform Software Suites, Q4 2018》报告,对企业级容器平台(ECP)市场进行全面评估,希...

RancherLabs
32分钟前
0
0
【三 异步HTTP编程】 2. 流式HTTP响应

标准响应及Content-Length头 自HTTP1.1以来,服务器为了在一个链接中处理多个HTTP请求及响应,必须随response一起返回合适的Content-Length值。 默认情况下,对于简单请求你无需返回 Conten...

Landas
今天
0
0
Java后端技术栈,到底如何深入学习?

Java,是现阶段中国互联网公司中,覆盖度最广的研发语言。有不少朋友问,如何深入学习Java后端技术栈,今天分享一个,互联网牛人整理出来的Java深入学习路线图,以及免费学习资料。 一 。性能...

别打我会飞
今天
1
1

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部