当前位置:文档之家› iReport web 报表开发

iReport web 报表开发

iReport web 报表开发
iReport web 报表开发

第1章安装与使用iReport0.4.1

§1.1 不需安装,直接拷贝就可以使用

运行iReport.bat 启动iReport。

§1.2 新建报表

新建报表pdfUnitList.xml

§1.3 配置数据库

1、在datasource中的菜单。

§1.4 报表字体设置

选择view菜单的Report font选项,点击new后,如下图进行调整:

添加完new 字体后,选择报表元素(箭头1)按右键在窗口中选择FONT->Report font 选中新添加的字体。

在Report SQL query 中写入报表查询条件,注意参数一定要写入默认值。按OK键结束。

§1.7 编译并测试报表

编译成功后执行execute report(using active conn)项

如果出现以下结果,表示报表正常。

第2章iReport报表在web项目的应用

§2.1 iReport制作的报表在web项目的安装

1、将iReport制作的报表编译后的jpdfUnitList.xml与jpdfUnitList.asper文件,拷贝到WEB-INF新建的文

件夹/report/pdf/unit 下。

2、拷贝iReport的lib下的所有文件拷贝的WEB-INF/lib 下。

§2.2 新增报表模块

1、建立包路径(com.qhtf.apps.basicinfo.rp)

2、在路径下建如下文件

(1) IJReport.java

package com.qhtf.apps.basicinfo.rp;

import java.sql.Connection;

import java.util.Map;

public interface IJReport {

public Map getParamMap();

public String getSourceFile();

public String getDestFile();

public Connection getConnection();

}

(2)AbstractJReportPrinter.java

package com.qhtf.apps.basicinfo.rp;

public abstract class AbstractJReportPrinter {

public abstract void print()throws Exception;

}

(3) JReportPrinterFactory .java

package com.qhtf.apps.basicinfo.rp;

public class JReportPrinterFactory {

private AbstractJReportPrinter abstractJReportPrinter;

private static JReportPrinterFactory jReportPrinterFactory;

private JReportPrinterFactory(AbstractJReportPrinter abstractJReportPrinter) {

this.abstractJReportPrinter = abstractJReportPrinter;

}

public static JReportPrinterFactory getInstance(AbstractJReportPrinter abstractJReportPrinter) { return jReportPrinterFactory = new JReportPrinterFactory(abstractJReportPrinter);

}

public void print()throws Exception{

abstractJReportPrinter.print();

}

}

(4) JreportUtil.java

package com.qhtf.apps.basicinfo.rp;

public class JReportUtil {

public static void printToPdf(IJReport report)throws Exception{

JReportPdfPrinter jReportPdfPrinter= new JReportPdfPrinter(report);

JReportPrinterFactory.getInstance(jReportPdfPrinter).print();

}

public static void printToHtml(IJReport report)throws Exception{

JReportHtmlPrinter jReportHtmlPrinter= new JReportHtmlPrinter(report);

JReportPrinterFactory.getInstance(jReportHtmlPrinter).print();

}

public static void printToExcel(IJReport report)throws Exception{

JReportExcelPrinter jReportExcelPrinter= new JReportExcelPrinter(report);

JReportPrinterFactory.getInstance(jReportExcelPrinter).print();

}

}

§2.3 PDF打印

§2.3.1 修改jsp文件

打开/lemis/basicinfo/enterpriseList.jsp,在文件最后加入

<%--==Begin 打印单位基本信息列表,action为打印类==--%>

target="_blank">

<%--==使用IReport制作报表时设置的条件参数==--%>

<%--==sourceFile 为报表原文件前缀名,此名必须与IReport编译后的文件同名==--%>

<%--==destFile 为道出的报表文件前缀名,此名不须与IReport编译后的文件同名但建议为同名==--%>

<%--==报表打印action的方法名==--%>

<%--==End 打印单位基本信息列表==--%>

§2.3.2 修改struts配置文件

打开/WEB-INF/struts-basicinfo.xml,在文件中加入

parameter="method"

path="/printPdfAction"

type="com.qhtf.apps.basicinfo.rp.PrintPdfAction">

§2.3.3 PDF打印实现

(5) JreportPdfImpl.java

package com.qhtf.apps.basicinfo.rp;

import java.sql.Connection;

import java.util.Map;

public class JReportPdfImpl implements IJReport {

private Map paramMap;

private String sourceFile;

private String destFile;

private Connection connection;

public JReportPdfImpl(Map paramMap,String sourceFile,String destFile,Connection connection) { this.paramMap=paramMap;

this.sourceFile=sourceFile;

this.destFile=destFile;

this.connection=connection;

}

public Map getParamMap() {

return paramMap;

}

public String getSourceFile() {

return sourceFile;

}

public String getDestFile() {

return destFile;

}

public Connection getConnection() {

return connection;

}

}

(6) JreportPdfPrinter.java

package com.qhtf.apps.basicinfo.rp;

import java.sql.Connection;

import java.util.Map;

import https://www.doczj.com/doc/4d5709911.html,mons.op.HibernateSession;

import net.sf.jasperreports.engine.JasperExportManager;

import net.sf.jasperreports.engine.JasperFillManager;

import net.sf.jasperreports.engine.JasperPrint;

public class JReportPdfPrinter extends AbstractJReportPrinter {

private IJReport report;

public JReportPdfPrinter(IJReport report){

this.report=report;

}

public void print()throws Exception {

Connection conn=null;

try {

conn=report.getConnection();

//设定传给jasper文件的参数

Map parameters = report.getParamMap();

//填充报表内容

JasperPrint jasperPrint = JasperFillManager.fillReport(report.getSourceFile(), parameters, conn);

//生成PDF文件

JasperExportManager.exportReportToPdfFile(jasperPrint, report.getDestFile());

} catch (Exception ex) {

ex.printStackTrace();

throw new Exception("打印报表时出错!");

} finally {

//关闭连接

if (null != conn) {

HibernateSession.closeSession();

}

}

}

}

§2.3.4 新增PDF打印action

(7) PrintAction.java

package com.qhtf.apps.basicinfo.rp;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.ActionForm;

import org.apache.struts.action.ActionForward;

import org.apache.struts.action.ActionMapping;

import https://www.doczj.com/doc/4d5709911.html,DispatchAction;

import https://www.doczj.com/doc/4d5709911.html,mons.log.LogHelper;

public abstract class PrintAction extends BizDispatchAction {

// 定义log

private LogHelper log = new LogHelper(this.getClass());

public abstract ActionForward print(ActionMapping mapping, ActionForm actionForm, HttpServletRequest request, HttpServletResponse response)

throws Exception;

}

(8) PrintPdfAction.java

package com.qhtf.apps.basicinfo.rp;

import java.sql.Connection;

import java.util.HashMap;

import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.ActionForm;

import org.apache.struts.action.ActionForward;

import org.apache.struts.action.ActionMapping;

import com.lbs.apps.recommendation.consigninvite.rp.PrintAction;

import https://www.doczj.com/doc/4d5709911.html,mons.op.HibernateSession;

public class PrintPdfAction extends PrintAction {

public ActionForward print(ActionMapping mapping, ActionForm actionForm, HttpServletRequest request, HttpServletResponse response)

throws Exception {

Map parameters=new HashMap();

String unitID = (String) request.getParameter("unitID");

String unitName = (String) request.getParameter("unitName");

parameters.put("p_unitID", unitID);

parameters.put("p_unitName", unitName);

String sourceFilePrefix=request.getParameter("sourceFile");

String sourceFile=getSourceFile(sourceFilePrefix);

String destFilePrefix=request.getParameter("destFile");

String destFile=getDestFile(destFilePrefix);

Connection conn=HibernateSession.currentSession().connection();

IJReport jReport=new JReportPdfImpl(parameters,sourceFile,destFile,conn);

JReportUtil.printToPdf(jReport);

return mapping.findForward("unitInfoList");

}

private String getSourceFile(String sourceFilePrefix){

//上下文路径

String contextPath = this.getServlet().getServletContext().getRealPath("/");

String sourceFile=contextPath+"/WEB-INF/report/pdf/unit/"+sourceFilePrefix+".jasper";

return sourceFile;

}

private String getDestFile(String destFilePrefix){

//上下文路径

String contextPath = this.getServlet().getServletContext().getRealPath("/");

String destFile=contextPath+"/reports/unit/pdf/"+destFilePrefix+".pdf";

return destFile;

}

}

§2.4 导出EXCEL报表

§2.4.1 修改jsp文件

打开/lemis/basicinfo/enterpriseList.jsp,在文件最后加入

<%--==Begin 导出单位基本信息列表,action为导出EXCEL类==--%>

target="_blank">

<%--==使用IReport制作报表时设置的条件参数==--%>

<%--==sourceFile 为报表原文件前缀名,此名必须与IReport编译后的文件同名==--%>

<%--==destFile 为道出的报表文件前缀名,此名不须与IReport编译后的文件同名但建议为同名==--%>

<%--==报表打印action的方法名==--%>

<%--==End 导出单位基本信息列表==--%>

§2.4.2 修改struts配置文件

打开/WEB-INF/struts-basicinfo.xml,在文件中加入

parameter="method"

path="/printExcelAction"

type="com.qhtf.apps.basicinfo.rp.PrintExcelAction">

path="/reports/unit/pdf/pdfUnitInfoList.xls"contextRelative="true"/>

§2.4.3 导出EXCEL报表实现

(9)JreportExcelImpl.Java

package com.qhtf.apps.basicinfo.rp;

import java.sql.Connection;

import java.util.Map;

public class JReportExcelImpl implements IJReport {

private Map paramMap;

private String sourceFile;

private String destFile;

private Connection connection;

public JReportExcelImpl(Map paramMap,String sourceFile,String destFile,Connection connection) { this.paramMap=paramMap;

this.sourceFile=sourceFile;

this.destFile=destFile;

this.connection=connection;

}

public Map getParamMap() {

return paramMap;

}

public String getSourceFile() {

// TODO Auto-generated method stub

return sourceFile;

}

public String getDestFile() {

// TODO Auto-generated method stub

return destFile;

}

public Connection getConnection() {

// TODO Auto-generated method stub

return connection;

}

}

(10) JreportExcelPrinter.java

package com.qhtf.apps.basicinfo.rp;

import java.io.File;

import java.sql.Connection;

import java.util.Map;

import net.sf.jasperreports.engine.JRExporterParameter;

import net.sf.jasperreports.engine.JasperFillManager;

import net.sf.jasperreports.engine.JasperPrint;

import net.sf.jasperreports.engine.export.JRXlsExporter;

import net.sf.jasperreports.engine.export.JRXlsExporterParameter;

import https://www.doczj.com/doc/4d5709911.html,mons.op.HibernateSession;

public class JReportExcelPrinter extends AbstractJReportPrinter {

private IJReport report;

public JReportExcelPrinter(IJReport report){

this.report=report;

}

public void print()throws Exception {

Connection conn=null;

try {

conn=report.getConnection();

//设定传给jasper文件的参数

Map parameters = report.getParamMap();

//填充报表内容

JasperPrint jasperPrint = JasperFillManager.fillReport(report.getSourceFile(), parameters, conn);

//生成Excel文件

File destFile = new File(report.getDestFile());

JRXlsExporter exporter = new JRXlsExporter();

exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);

exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, destFile.toString());

exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.FALSE);

exporter.exportReport();

} catch (Exception ex) {

ex.printStackTrace();

throw new Exception("打印报表时出错!");

} finally {

//关闭连接

if (null != conn) {

HibernateSession.closeSession();

}

}

}

}

§2.4.4 导出EXCEL报表action

(11) PrintExcelAction.java

package com.qhtf.apps.basicinfo.rp;

import java.sql.Connection;

import java.util.HashMap;

import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.ActionForm;

import org.apache.struts.action.ActionForward;

import org.apache.struts.action.ActionMapping;

import com.lbs.apps.recommendation.consigninvite.rp.PrintAction;

import https://www.doczj.com/doc/4d5709911.html,mons.op.HibernateSession;

public class PrintExcelAction extends PrintAction {

public ActionForward print(ActionMapping mapping, ActionForm actionForm, HttpServletRequest request, HttpServletResponse response)

throws Exception {

response.setContentType("application/vnd.ms-excel;charset=GBK");

Map parameters=new HashMap();

String unitID = (String) request.getParameter("unitID");

String unitName = (String) request.getParameter("unitName");

parameters.put("p_unitID", unitID);

parameters.put("p_unitName", unitName);

String sourceFilePrefix=request.getParameter("sourceFile");

String sourceFile=getSourceFile(sourceFilePrefix);

String destFilePrefix=request.getParameter("destFile");

String destFile=getDestFile(destFilePrefix);

Connection conn=HibernateSession.currentSession().connection();

IJReport jReport=new JReportExcelImpl(parameters,sourceFile,destFile,conn);

JReportUtil.printToExcel(jReport);

return mapping.findForward("unitInfoList");

}

private String getSourceFile(String sourceFilePrefix){

//上下文路径

String contextPath = this.getServlet().getServletContext().getRealPath("/");

String sourceFile=contextPath+"/WEB-INF/report/pdf/unit/"+sourceFilePrefix+".jasper";

return sourceFile;

}

private String getDestFile(String destFilePrefix){

//上下文路径

String contextPath = this.getServlet().getServletContext().getRealPath("/");

String destFile=contextPath+"/reports/unit/pdf/"+destFilePrefix+".xls";

return destFile;

}

}

§2.5 Rose图

【良心出品】Web报表系统研究背景意义及国内外现状

Web报表系统研究背景意义及国内外现状1研究背景 2国内外发展的动态 3研究的意义 1研究背景 随着Internet的广泛应用,电子政务、电子商务以及企业ERP(Enterprise Resource Planning)得到迅猛发展,数据的采集、传输、展示、交互、等问题显得越来越重要。报表作为一种信息组织和展示的有力手段,是企业信息系统的重要组成部分。据不完全统计,企业系统的实际应用中,有60%以上与报表相关。报表系统在各行各业中都有很广泛的用途,是进行信息浏览、分析、打印的有力工具。随着WWW(World Wide Web)技术的发展,企业系统从传统的客户端/服务器结构逐步向Internet转移,企业信息系统也正向基于Web的信息系统进行转变,越来越多的报表应用将在Web环境下开发与运行。 以往的报表系统中,业务逻辑与报表处理过程混杂在一起,任何一个需求或逻辑的改变都必须重新修改、编译这个报表程序才能完成。随着开发人员的不断完善,出现了多种报表设计器、生成器之类的工具,可以方便、快捷地实现需求。但创建的报表程序同样存在一下弊病: 1)开发出的报表程序功能有限,应用程序的交互界面、业务逻辑、数据库的处理操作没有分离,是混杂在一起的,属于是强耦合,维护升级相当困难。 2)静态确定报表的计算过程,报表无法在运行事动态改变,因而无法应对企业动态、复杂、多变的需求。一旦新的需求出现,或者运行时的环境发生改变,整个程序可能需要重写。 3)使用这类工具设计报表,经常使我们面临这样的处境:“简单设计,复杂实现,痛苦维护”,伴随着此类报表数量的增多,对报表系统开发与维护的工作量将成倍增长。 4)在企业内部大量存在使用了多个面向不同应用系统的情况,比如生产系统、财务系统、人事系统等,通常它们是独立的,无法整合,系统间数据无法通讯,或只能实现少量的信息交互,大量信息交互工作需要手工来进行。 因此,开发一个报表系统,显得日趋重要。这样的报表系统可以轻松地做到与数据库和平台无关。 2国内外发展的动态 近年来,国内外各个领域对于web报表的研究也在逐渐增多,不过传统的报

测试webService地址是否能够访问

通过COM组件测试webService地址是否能够访问 //适用于测试连接webService远程服务器 //引用Microsoft XML, v3.0 COM组件 //测试连接 privatevoid btnTestConn_Click(object sender, EventArgs e) { string strIP = txtServerAdddress.Text; if (!strIP.Contains("http://")) { strIP = "http://" + strIP; } string strProt = txtServerProt.Text; string strAddress = strIP + ":" + strProt + "/DataService?wsdl"; string urls = "http://192.168.1.7:8884/DataService?wsdl"; XMLHTTP http = new XMLHTTP(); try { http.open("GET", strAddress, false, null, null); http.send(strAddress); int status = http.status;

if (status == 200) { MessageBox.Show("成功"); } else { MessageBox.Show("连接失败。状态:" + status.ToString()); } } catch { MessageBox.Show("连接失败!"); } } 二、测试webService是否访问正常 //测试连接

WebI(web Intelligence)报表设计指南

第二节WebI报表 关键词:报表语义层|Universe|WebI(Web Intelligence) 如图1, 打开浏览器后, 就可建立Webi文档, Webi为用户提供了易于使用、灵活的交互式报表界面,Webi的功能特点: (1).直接使用浏览器比如IE,不需要再安装任何客户端。 (2).界面友好,简单易用,不用编写任何程序通过定义报表取数公式就能出具复杂报表。 (3).强大的报表公式定义功能,后面将有详细介绍。 (4).基于浏览器的即席查询功能。 图1-[1]:BO提供了强大的报表目录管理功能,可以将Webi报表文件分目录管理,“公共文件夹”目录可保留报表模板,“我的文件夹”目录则收藏着个性报表文件。 图1-[2]:选择“新建”按钮弹出一子菜单,用户选择“Web Intelligence文档”,出现图2画面,在Universe列表中选择一Universe,Universe是报表的语义层,定义了报表和BI间的映射,在Universe列表中选择要使用的报表语义层。 图1-[3][4]:可以上载本地的Excel报表到报表服务器,也可根据需要选择“文件夹“子菜单建立报表文件夹或子文件夹。

下面以资产负债表为例说明Webi报表的做法,为此在列表中选择总帐余额Universe FV00FN024_Q,该Universe连接到总帐余额信息立方体,如图2,选中Universe后,进入图3。 图3-[1]:选择右上角的这几个图标可以隐藏“文件夹“和最大化报表窗口。 图3-[2][3]:Webi报表文件的制作分两步,一是建立查询,查询的作用是连接BI数据,查询建立完毕,可按“运行查询“按钮读取数据,二是建立报表,可为报表单元灵活 定义各种公式。 图3-[4][5]:图3-[4]显示的正是总帐信息立方体的维度, 现在可以将所需要的特征和关键指标拖到图3-[5]的”结果对象”窗口,资产负债表通常只需要“报表单位“,”“会计

XMLWebService完全实例详细解析

XMLWebService完全实例详细解析 首先,我们必须了解什么是webservice.就概念上来说,可能比较复杂,不过我们可以有个宏观的了解:webservice就是个对外的接口,里面有函数可供外部客户调用(注意:里面同样有客户不可调用的函数).假若我们是服务端,我们写好了个webservice,然后把它给了客户(同时我们给了他们调用规则),客户就可以在从服务端获取信息时处于一个相对透明的状态.即是客户不了解(也不需要)其过程,他们只获取数据. webservice传递的数据只能是序列化的数据,典型的就是xml数据,这里我们也只讨论XML数据的传输. 有了一些对XML webservice的初步了解后,我们将切入正题,即是用一个具体的webservice事例的形式来讲解具体的webservice用法,用具体的事例来讲解一个概念我想怎么也要比单纯的说理能让人容易理解吧. 这里,我们将以一个简单的分布式课件搜索系统为例来讲解.使用VS2003为编译环境,C#为语言,SqlServcer2000为数据库.(这个例子来源于一位网上朋友的文章的启发,觉得很能代表webservice的特点,就按那个想法做了这么个系统来示例了) 首先,明确我们要做什么.我们需要一个对客户的接口,也就是个站点,我们把它称做ServiceGatherSite,它是何种形式都无所谓,甚至它本身并不需要数据库,它只是提供给用户一个查询的接口,真正的服务,普通用户是不接触到的.然后,这里我们还需要若干个提供服务的站点,我们可以称它们为资源站,这里为简单起见,假设有两个资源站,分别叫WebSiteA,WebSiteB,它们可以是不对外公布的,只是为了丰富查询数据而存在.最后,是我们最需要关注的东西---资源站提供给ServiceGatherSite的服务.两个资源站,就有两个服务,我们称为SiteAService和 SiteBService.两个服务间没有任何关系,内部提供的方法也完全没关联,只是需要把方法如何使用告诉ServiceGatherSite,意思是,服务只提供查询接口,返回的数据如何处理,服务本身并不管,全由使用服务的站点分配. 写了这么多,算是简要的介绍了下有关XML webservice的概念和我们这个例子的结构,下篇文章,我们将开始真正进入代码的设计阶段. 上篇文章介绍了些webservice的基本特性和我们例子的结构,这篇文章我们将开始具体的代码编写工作.

Grid++WEB报表插件介绍 - WEB报表API,Grid++

WEB报表插件介绍 - WEB报表 Grid++Report 插件适用于开发 B/S 结构的网络报表系统,是软件开发人员开发WEB 报表的最佳选择。支持 Asp, https://www.doczj.com/doc/4d5709911.html,, Jsp, VbScript, JavaScript,PHP 等一切 Web 开发技术。可以在浏览器中直接打印报表(非IE打印)与导出报表。带有国际化数字签名,在 IE 中自动下载更方便,让用户使用更安全。 特点 1.Grid++Report 插件与Grid++Report 组件构建在相同的报表引擎之上,两者具有相同 编程接口与相同报表格式定义,以及相同的知识学习过程,让您开发B/S 系统与 C/S 系统共享相同的开发经验与开发资源。 2.网络报表界面美观,具有与桌面报表一样的报表展现功能与操作体验,大大改善浏 览器中报表功能。 3.支持丰富的报表数据来源,远程OLE DB数据源直接访问、服务端数据集载入、客户 端数据集与XML数据载入、以及一切可访问数据的加载。 4.数据经过高效压缩,极大减小数据网络传输量。 5.插件是一个纯客户端软件,支持一切WEB 开发语言,如:ASP、https://www.doczj.com/doc/4d5709911.html,、JSP、PHP 等。客户端脚本支持VBScript、JavaScript。 6.带有国际化数字签名,让用户使用的更安全、更放心。 7.Grid++Report 经过多年发展,用户数量众多,产品成熟稳定高效,易学以用。 组成部分: 1.报表打印显示插件:以打印预览的方式在IE 浏览器中展现报表,并能打印输出或 导出为多中格式文档(Excel、RTF、PDF、文本,CSV、图像等)。 2.报表查询显示插件:以类似数据网格(DataGrid)方式在IE 浏览器中展现报表,其数 据展现功能比常规的数据网格要强大得多。并可以打印或打印预览报表,或导出为多种格式文档(Excel、RTF、PDF、文本,CSV、图像等)。 3.报表对象:这是一个不可见的对象,也是本软件功能实现的核心对象,相当于报表 引擎。在网页中创建这个对象,可以实现无界面打印,将Web数据直接打印出来,也可以执行数据导出功能。报表打印显示插件与报表查询显示插件都引用一个报表对象,在网页中与报表的交互主要就是访问报表对象及其子对象。 4.报表设计器插件:在网页中可视化设计报表模板,关联一个报表对象。 参考 报表插件运行原理介绍 | 插件主要编程接口 | 向报表提供记录集数据 | 向报表统一提供记录集数据与参数数据 WEB报表插件运行原理介绍 - WEB报表

报表工具-即席报表设计器的基本功能

即席报表设计器 ActiveReports 即席报表设计器(Ad-hoc Designer)是一个功能丰富、完全基于Web的报表解决方案,能帮助商业用户轻松地创建具有交互功能的报表。这款基于浏览器的即席报表设计器,使用语义数据模型将开发技术细节和业务知识相分离,商业用户无需关心SQL等技术细节便可创建符合业务需求的报表。同时,该设计器还支持多用户报表,通过内置的SDK可实现自助式BI的需求,比传统报表工具更加有效。 ActiveReports 即席报表设计器(Ad-hoc Designer),根据用户角色提供相应的功能。主要面向的用户分为:企业用户、信息技术人员和开发人员。 ● 企业用户功能 可以快速的开发出具有专业外观和交互能力的报表,所有操作在Web浏览器中就完成,而且,你不必关心任何的开发技术细节。此外,ActiveReports 即席报表设计器内置对移动设备的支持,你可随时随地访问报表全部信息: 功能丰富、且极易使用的报表设计器,用户只需拖拽操作便可完成报表设计的全部工作。 即席报表设计器的使用完全基于浏览器,无需在终端用户环境中安装桌面应用程序。 通过语义数据模型封装所有技术细节,终端用户只需聚焦业务表达。

可直接设置报表运行计划,并自动分发报表内容。 可通过PC/笔记本/iPad/iPhone/Android和Windows Phone直接访问报表,完成报表查看、打印、导出以及数据钻取等交互式数据分析操作。

● 信息技术(IT)人员功能 基于Web 的ActiveReports 即席报表设计器工具,让你在短短几分钟时间内便可熟悉工具的使用,并能快速的为您的用户提供自助式报表服务: 通过创建数据模型,为用户提供基于业务逻辑的数据结构,便于用户理解和使用。 提供多种报表分发方式,便于数据的及时共享。 即席报表设计器的使用方式简单,与Office 类似,减低对用户的支持和培训成本。

C#调用WebService实例和开发

C#调用WebService实例和开发 一、基本概念 Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术。是:通过SOAP在Web上提供的软件服务,使用WSDL文件进行说明,并通过UDDI进行注册。简单的理解就是:webservice就是放在服务器上的函数,所有人都可以调用,然后返回信息。比如google就有一个web service,你调用它就可以很容易的做一个搜索网站。就像调用函数一样,传入若干参数(比如关键字、字符编码等),然后就能返回google检索的内容(返回一个字符串)。其中, Soap:(Simple Object Access Protocol)简单对象存取协议。是XML Web Service 的通信协议。当用户通过UDDI找到你的WSDL描述文档后,他通过可以SOAP调用你建立的Web服务中的一个或多个操作。SOAP是XML文档形式的调用方法的规范,它可以支持不同的底层接口,像HTTP(S)或者SMTP。 WSDL:(Web Services Description Language)WSDL文件是一个XML文档,用于说明一组SOAP消息以及如何交换这些消息。大多数情况下由软件自动生成和使用。 UDDI(Universal Description,Discovery,and Integration)是一个主要针对Web服务供应商和使用者的新项目。在用户能够调用Web服务之前,必须确定这个服务内包含哪些商务方法,找到被调用的接口定义,还要在服务端来编制软件,UDDI是一种根据描述文档来引导系统查找相应服务的机制。UDDI利用SOAP 消息机制(标准的XML/HTTP)来发布,编辑,浏览以及查找注册信息。它采用XML格式来封装各种不同类型的数据,并且发送到注册中心或者由注册中心来返回需要的数据。 二、优点缺点 Web Service的主要目标是跨平台的可互操作性。为了实现这一目标,Web Service完全基于XML(可扩展标记语言)、XSD(XML Schema)等独立于平台、独立于软件供应商的标准,是创建可互操作的、分布式应用程序的新平台。因此使用Web Service有许多优点: 1、跨防火墙的通信 如果应用程序有成千上万的用户,而且分布在世界各地,那么客户端和服务器之间的通信将是一个棘手的问题。因为客户端和服务器之间通常会有防火墙或者代理服务器。传统的做法是,选择用浏览器作为客户端,写下一大堆ASP页面,把应用程序的中间层暴露给最终用户。这样做的结果是开发难度大,程序很难维护。要是客户端代码不再如此依赖于HTML表单,客户端的编程就简单多了。如果中间层组件换成Web Service的话,就可以从用户界面直接调用中间层组件,

webservice四种发布方式及客户端调用

WebService 四种发布方式总结 Author:yczhang 1.CXF方式 CXF与spring搭建webservice是目前最流行的方式,但是传闻cxf与jdk1.5有些不兼容,我没有遇到过,我遇到的问题是cxf与was6.1.1不兼容,表现在cxf必须的jar包“wsdl4j-1.6.2.jar”报错,报的错为:https://www.doczj.com/doc/4d5709911.html,ng.IncompatibleClassChangeError,明显的jar包不兼容问题,很是头痛,后来查找资料找到解决办法是,将上述jar包新建一个was共享库,可以解决,但是客户周经理不想用此种方式,因为需要修改was,于是改用了axis2方式,下文会介绍。该问题在此处做个记录,以后使用cxf与was的时候需要注意!!! 使用cxf+spring搭建WebService: 第一步,添加jar包。此处需要注意,不同环境(tomcat、was)jar也不一定相同,例如我本地cxf+spring只需要如下jar包: 而泰康的was环境则需要如下jar包:

明显的多了很多,原因应该是服务器jar包池的不同。根据错误提示缺什么补什么就可以了,注意jar包勿重复。 第二步,配置web.xml文件,如下(重要的地方已标记): contextConfigLocation classpath:/applicationContext.xml org.springframework.web.context.ContextLoaderListener encodingFilter org.springframework.web.filter.CharacterEncodingFil ter encoding UTF-8 encodingFilter /* CXFServlet org.apache.cxf.transport.servlet.CXFServlet 1 CXFServlet /webservice/* 上述标记的地方,第一处是spring配置文件路径;第二出是wsdl地址内容;

基于JavaReport的Web报表开发

在前一节中,使用word工具来辅助制作和打印报表,可发现代码冗长,不方便程序员阅读,而且修改比较麻烦,需要在word中重新制作再生成报表模板,jsp中的程序代码又必须重新找到合适的位置以放入其中。为简化这个开发过程,并拓展功能,出现了一些第三方的专门用于Web报表开发组件,如jasperreport,它把报表的模板生成作为一个XML文件保存,根据这个模板再用少量的Java代码即可生成复杂的报表,并可导出成PDF、HTML等格式,然而它是国外的第三方组件,对中文支持不够,且其开发手册需要付费。 为此,本书介绍一款国产的第三方组件——JavaReport,它由伟才工作室开发,这个组件简单易用,只须编写少量的代码即可开发出复杂的报表和图形,中文支持较好,较为实用。 JavaReport可从网上免费下载得到,网址如下:https://www.doczj.com/doc/4d5709911.html,/download.htm 一、JavaReport介绍 JavaReport主要有如下优点。 (1)支持实时的、动态的Web统计报表 JavaReport所展示的报表是动态的报表。所有的数据都是实时的数据;所有的统计图也是动态生成的。报表里面的数据源可从数据库中即时查询产生,适合于对实时统计要求高的应用系统。 (2)接口丰富,对图表提供良好的支持 JavaReport提供了丰富的应用程序接口、减少代码复用、灵活的图表形式、即时图表生成、更短的生成时间等。Java报表对图表有良好的支持,可以生成柱图、饼图和折线图等十几种图表。 (3)报表可导出成各种格式的文档 JavaReport在报表展现方面表现优异,能实现Word,Excel,PDF,CSV等格式精确导出等功能,并提供了全部的页面与打印控制。 (4)开发简便,程序员只须编写少量程序代码 有许多的问题在JavaReport组件内已经解决,如报表的导出功能、打印功能和数据的分页处理等。在很多B/S结构体系的系统开发时,分页是开发过程中要重点考虑的问题。但在JavaReport中,就不需要考虑上下翻页,跨页分页,因为这些问题报表引擎已经实现了。在设计报表的过程中,把Report类当作容器类,统计图类,表格类,标签类,图片类等,把它们当作组件类。至于跨页分页,上下翻页由报表引擎自动完成。JavaReport系统中有自动跨页分页的功能,当表格超过当前页的大小时,系统会自动把接着部分放到下一页。报表设计在开发过程中是感觉不到要跨页的存在,只有一个全部数据完整的表格对象。 如果把引入图片文件加入到报表中,可使用报表系统的Report类,通过这个类的addImage()方法把Image对象加进来,如果需要自定义图像,可通过第三方画图程序(例如是JFreeChart程序)生产需要的统计图/图片,然后再把图像加到报表中去。 本书中使用的JavaReport版本是V3.0,JavaReport根据客户的应用需要,按照功能和性能的等级,分成三个版本:专业版,服务器版,企业版。本书使用企业版。 JavaReport三个版本产品都是免费使用的。也就是说这三个版本都不需要购买License许可,可以自由使用JavaReport的所有功能。免费提供报表在Web展示功能,表和图怎样混合功能,跨页分页功能,导出电子文档Word,PDF,Excel,CSV,HTML等诸多功能。 专业版客户(Client)的IP最大连接数限制为10个,也就是JavaReport同时并行处理线程的最大数受限制。限制是为了避免系统资源占用过大,使系统反应迟钝。该版本适合中小型的应用系统,保障应用系统正常运行。 服务器版在最大连接数没有受限,它能充分发挥服务器的个部分硬件设备的作用;相对要求服务器的设备配置高,保障最优性能效率。该版本适合大中型的应用系统使用。 企业版提供垃圾回收机制管理,自动处理在内存中无用对象的引用;支持多服务器处理

NET调用WebService服务的方法详解!

本文实例讲述了https://www.doczj.com/doc/4d5709911.html,调用WebService服务的方法。分享给大家供大家参考,具体如下: 一、WebService:WebService是以独立于平台的方式,通过标准的Web协议,可以由程序访问的应用程序逻辑单元。 (1)应用程序逻辑单元:web服务包括一些应用程序逻辑单元或者代码。这些代码可以完成运算任务,可以完成数据库查询,可以完成计算机程序能够完成的任何工作。 (2)可由程序访问:当前大多是web站点都是通过浏览器由人工访问的,web服务可以由计算机程序来访问。 (3)标准的we协议:Web服务的所有协议都是基于一组标准的Web协议,如HTTP、XML、SOAP、WSDl、UDDI等 (4)平台独立性:web服务可以在任何平台上实现。因为标准协议不是由单个供应商专用的,它由大多数主要供应商支持。 SOAP(Simple Object Access Protocol,简单对象访问协议)协议:是用于交换XML编码信息的轻量级协议,SOAP协议是HTTP和XML协议的组合。 WSDL(Web Service Description Language,Web服务描述语言)是用XML文档来描述Web 服务的标准,是Web服务的接口定义语言。 二、创建https://www.doczj.com/doc/4d5709911.html, WEB服务 建立Web服务就是把一些信息或逻辑对其他计算机和客户公开,进一步说,就是从支持SOAP通信的类中建立一个或多个方法。 创建Web服务的步骤:(VS2008) 首先,新建一个网站。选择文件-------->新建--------->网站,打开“新建网站”对话框,选择“https://www.doczj.com/doc/4d5709911.html, web服务”模板。确定后,创建成功。 创建好后,会生成Service.asmx,其代码隐藏文件Servece.cs位于App_Code文件中。Web服务文件都使用扩展名.asmx。 发现在VS2010中,创建web服务是先新建一个网站,在选择添加新项,然后选择web 服务。 三、使用https://www.doczj.com/doc/4d5709911.html, Web服务 (1)添加Web引用 1、新建网站,右键单击网站根目录,选择“添加Web引用”项。 2、在“添加Web引用”对话框中,在URl列表框中选择或者填入Web服务的URL。(.asmx 文件路径)然后在“添加Web引用”文本框中填入希望在应用程序中使用的添加Web引用名。

Delphi调用WebService的实例(非常经典)

Delphi 调用webservice 经典实例 Dispatch: 派遣,分派 Invoke: 调用 Invokable: 可调用接口 TReomtable: WebService中自定义类都是继承自该类 TSOAPAttachment: Attachment:附件,一种流类型,可以返回流数据 CGI:(EXE) ISAPI:(DLL) Base64编码: uses EncdDecd; s := EncodeString(s); //加 base64 编码 s := DecodeString( str ); //解码 UTF8: UTF8 是8位的UNICODE字符,而ASCII是7位 ,gb2312和unicode是2字节/字,utf8是3字节/字utf8类似以前的8位转7位的编码,是为了在网络间不同系统的通讯方便而作的转换。几乎所有用.Net写的WebService只支持DOC方式、Delphi写的只支持RPC方式;J2ME目前对Web Service的支持仅限于RFC172,而 RFC172要求必须为DOC方式(sun怎么偏袒MS?)! 为了在设计中减少障碍,下面还介绍几个概念。 1) SOAP:SOAP是一种简单有效的数据传输协议,用于分布式网络环境下数据信息交换,它以XML 作为数据传输的格式,搭配Internet上标准的传输协议HTTP、SMTP、TCP等来传送信息。从本质上看,SOAP事实上只是将Request和Response经由XML格式把数据打包,达到双方沟通的目的。 2) WSDL:WSDL(Web Service Description Language)是一种以XML格式描述的Web Service语言,当Web Service Provider 要对外公布提供的 Web Service,就需要通过WSDL来构建描述语言。在WSDL中有两个非常重要的要素::此WSDL文件所要描述的Web Service集合;每一个Port代表外界Client可以和此Service沟通的一个进入点,一个Port会指定一个Binding方式。 3):处理中文乱码的问题: 将HttpRio的 Converter 的 Options 的 soUTF8InHeader 设为 True 将生成soap消息的HTTPSoapDispatcher控件,添加encoding为gb2312 https://www.doczj.com/doc/4d5709911.html,eUTF8InHeader := True; 4)在Delphi中,能够传递的自定义类型的对象要继承TRemotable, 5:修正一个服务器端的一个Bug:将ISAPIThreadPool和ISAPIApp的次序变一下:ISAPIApp必须在 ISAPIThreadPool之前: uses ... ISAPIApp, ISAPIThreadPool 解决如下错误: Received content of invalid Content-Type setting:text/html -SOAP"expects"text/xml" 6:"XML document must have a top level element. Line: 0" 错误,我该如何解决??哈纳斯 (2002-08-05 17:26:00) 我也曾碰到同样的问题解决方法是:别设httprio的wsdllocation,设它的url 如http://localhost/mydir/project1.exe/wsdl/IFIRST mydir是你的可执行的虚拟目录,IFIRST是你定义的接口名 ********************************************************************* **************************

巧用asp实现web数据统计报表和打印

巧用ASP实现Web数据统计、报表和打印 1、引言 随着Internet的飞速发展,基于Web开发的业务应用系统越来越多,如办公自动化、电子商务和管理信息系统(MIS)等。这些Web业务应用系统经常涉及到数据的统计、报表和打印。ASP在实施动态交互和生成动态页面方面具有很大的优势,但在处理复杂数据统计、报表和打印时却遇到不小的麻烦。本文阐述一种利用ASP实现Web数据统计、报表的基本思路和实现方法,同时提供一种巧妙调用Word打印报表的解决方案。 2、应用实例 假设有一家公司利用网络MIS系统对公司员工进行管理,必然会涉及到各部门的员工统计。为了简单起见,假设最终的统计报表如下:公司员工统计表部门合计员工姓名市场部2张三李四研发部3王五赵六刘七员工合计5 与传统单机MIS系统相比,在网络MIS系统中使用ASP实现以上数据统计、报表和打印会遇到以下问题:(1)数据统计时需要按部门进行分类统计,同时要记下各部门员工的具体名单。(2)报表生成时需按具体要求动态绘制几行几列表格,同时在适当的地方保持空白。(3)表格打印可以简单地按网页打印,但效果不好,而且不容易控制。

3、实现方法 简述基于Web的业务应用一般采用三层结构,客户端是普 通的Web浏览器,中间业务逻辑应用层存放于Web服务器上,由Web服务器上的数据库接口访问后台数据库。利用ASP实现Web数据统计、报表和打印的过程如图所示:浏览器HTML VBScript 统计报表Word 对象Web服务器业务逻辑实现数据库访问接口数据库Word本地打印(1)客户端向Web服务器发送数据统计请求。(2)Web服务器执行SQL语句,从后台数据库取得统计数据,在页面上动态 生成报表。(3)在客户端运行脚本,使用VBScript脚本函数CreateObject在本地创建Word的Document对象的实例,也就是在客户端创建Word文档,设定表格属性,然后将页面上的报表数据填入本地Word表格,最后保存文档,执行本地Word打印。 4、实现过程分析 (1)数据库连接首先建立数据库(data.mdb),简单的员工资料表(personnel)结构如下:personnel:department,文本;name,文本;然后建立一个ODBC数据源(DSN),利用DSN指向ODBC数据库。(2)程序代码分析(在此只分析统计报表程序tongji.asp)//以下显示表格标题和输出 表头公司员工统计表//注意:此处标明表格的id为data 部门合计员工姓名//如果flag为0,表示该部门是首次出现,

基于JavaReport的Web报表开发

一、JavaReport介绍 JavaReport主要有如下优点。 (1)支持实时的、动态的Web统计报表 JavaReport所展示的报表是动态的报表。所有的数据都是实时的数据;所有的统计图也是动态生成的。报表里面的数据源可从数据库中即时查询产生,适合于对实时统计要求高的应用系统。 (2)接口丰富,对图表提供良好的支持 JavaReport提供了丰富的应用程序接口、减少代码复用、灵活的图表形式、即时图表生成、更短的生成时间等。Java报表对图表有良好的支持,可以生成柱图、饼图和折线图等十几种图表。 (3)报表可导出成各种格式的文档 JavaReport在报表展现方面表现优异,能实现Word,Excel,PDF,CSV等格式精确导出等功能,并提供了全部的页面与打印控制。 (4)开发简便,程序员只须编写少量程序代码 有许多的问题在JavaReport组件内已经解决,如报表的导出功能、打印功能和数据的分页处理等。在很多B/S结构体系的系统开发时,分页是开发过程中要重点考虑的问题。但在JavaReport中,就不需要考虑上下翻页,跨页分页,因为这些问题报表引擎已经实现了。在设计报表的过程中,把Report类当作容器类,统计图类,表格类,标签类,图片类等,把它们当作组件类。至于跨页分页,上下翻页由报表引擎自动完成。JavaReport系统中有自动跨页分页的功能,当表格超过当前页的大小时,系统会自动把接着部分放到下一页。报表设计在开发过程中是感觉不到要跨页的存在,只有一个全部数据完整的表格对象。 如果把引入图片文件加入到报表中,可使用报表系统的Report类,通过这个类的addImage()方法把Image对象加进来,如果需要自定义图像,可通过第三方画图程序(例如是JFreeChart程序)生产需要的统计图/图片,然后再把图像加到报表中去。 本书中使用的JavaReport版本是V3.0,JavaReport根据客户的应用需要,按照功能和性能的等级,分成三个版本:专业版,服务器版,企业版。本书使用企业版。 JavaReport三个版本产品都是免费使用的。也就是说这三个版本都不需要购买License许可,可以自由使用JavaReport的所有功能。免费提供报表在Web展示功能,表和图怎样混合功能,跨页分页功能,导出电子文档Word,PDF,Excel,CSV,HTML 等诸多功能。 专业版客户(Client)的IP最大连接数限制为10个,也就是JavaReport同时并行处理线程的最大数受限制。限制是为了避免系统资源占用过大,使系统反应迟钝。该版本适合中小型的应用系统,保障应用系统正常运行。

C# 调用webservice 传递实体对象

C# 调用webservice 传递实体对象 在webservice端公开一个实体类,然后实例化,赋值,然后再给到webservice,可以实现,但是,即使调用端和service端的实体类完全一致,你也要重新实例化service端的,重新赋值,将此传回service端。因为,C#是强类型的语言。 当然,你也可以通过下面的方法传递实体类,而不用太纠结于赋值了。 在调用端序列化实体对象(实体对象须是可序列化的类): public static byte[] SerializeObject(object pObj) { if (pObj == null) return null; System.IO.MemoryStream memoryStream = new System.IO.MemoryStream(); BinaryFormatter formatter = new BinaryFormatter(); formatter.Serialize(memoryStream, pObj); memoryStream.Position = 0; byte[] read = new byte[memoryStream.Length]; memoryStream.Read(read, 0, read.Length); memoryStream.Close(); return read; } 在service的调用方法中,接受一个byte[] 参数即可,然后反序列化: public object DeserializeObject(byte[] pBytes) { object newOjb = null; if (pBytes == null) { return newOjb; } System.IO.MemoryStream memoryStream = new System.IO.MemoryStream(pBytes); memoryStream.Position = 0; BinaryFormatter formatter = new BinaryFormatter(); newOjb = formatter.Deserialize(memoryStream); memoryStream.Close(); return newOjb; } 然后将object强制转换成相应的实体类型,就可以直接使用此对象了。 注:在调用端和service端都引用了同一版本的实体程序集.

第一个webservice例子

第一个的webservice实例 超简单,才5步 1> 获取axis及关联的jar包 https://www.doczj.com/doc/4d5709911.html,/topics/download/6a76de1e-d506-35bc-a41b-508d4be04025 2> 新建一个模拟服务java类 package server; public class SayHello { public String getName(String name) { return "你好," + name; } } 3> 在web.xml 下新增一个servelt AxisServlet org.apache.axis.transport.http.AxisServlet AxisServlet /services/* 4> 在web项目的web.xml 同目录新建文件server-config.wsdd,自己改改

Web报表工具FineReport定时器使用说明

?帆软(中国)有限公司 ?商务咨询电话:86-025-5186 2240 ?商务咨询邮箱:business@https://www.doczj.com/doc/4d5709911.html, ?公司网址:https://www.doczj.com/doc/4d5709911.html, Web报表工具FineReport定时器使用说明 本书介绍了报表工具FineReportV6.5定时器功能的相关参数及配置说明,本书最后详细列举了几个使用定时器功能的模板制作示例。 6.5定时器配置简要说明 (2) 6.5定时器参数专题 (10) 6.5定时器填报 (15) 6.5定时器日报专题 (19) 6.5定时器月报专题 (24) 6.5定时器年报专题 (29) 6.5定时器邮件专题 (33) /

?帆软(中国)有限公司 ?商务咨询电话:86-025-5186 2240 ?商务咨询邮箱:business@https://www.doczj.com/doc/4d5709911.html, ?公司网址:https://www.doczj.com/doc/4d5709911.html, 6.5配置简要说明 在制作报表中,您可能需要面临定期产生,定期发布等问题,FineReport提供了定时器这个功能,对于6.5版本,在6.2的基础上进行了扩充,可在页面直接进行操作,下面就简单介绍一下。 1.配置环境 此环境是自在tomcat环境中配置的,因此需要把FineReport6.5安装目录下的WebReport文件拷贝到%Tomcat_HOME%/webapps/下 1.1整合web.xml 打开%Tomcat_HOME%/webapps/WebReport/WEB-INF目录下的web.xml,将 ScheduleServer com.fr.schedule.ScheduleServlet 1 ScheduleServer /ScheduleServer com.fr.schedule.ScheduleInitializerListener 整合到现有的web.xml中,如下图

相关主题
文本预览
相关文档 最新文档