基于WebPDF报表实现技术
- 格式:doc
- 大小:26.50 KB
- 文档页数:7
}//一></SCRIPT></HEAD><BODYLANGUAGEIja'VasgFiptonload=”retumwindow_onloadO”><OBJECTID=”DCELI。
WEBl”CLASSID=”CLSID:3F166327—8030-4881—8BD2.EA25350E574A”CODEBASE=”http://www.mysitecom/mydir/CELLWEB5.cab’’><,OBJECT></BODYx/HTML>CODEBASE可以直接指向一个OCX或DLL文什。
CODEBASE=”http://www.mysite.com/mydir/polygon.dll#version=1,2,3,4”冈为这仅仅完成了DLL或OCX文什的r载午ll安装,任何必要的支持DLL必须已经装载到了客户的计算机上。
如果您在CAB包文件中包含了版本号,它麻该是要F载的的控什的版本号。
例如:如果CELLWEB5.OCX有一个版本号5,2’4,921,则CAB包文什的版本号也必须是5,2,4,921:CODEBASEo’h却://www.mysite.com/mydir/CELLWEB5cab#version=5,2,4,921”如果你没有包含版本号,那么在客户端计算机上的老版本的控什将不能铍替换。
2.3.3CELL报表设计器的功能特点CELL产品提供了一个强人的报表设计器.不仅操作类似EXCEL,而且其强人功能更是贴切中国式报表的设计需求。
其操作卡界而如劁21。
表剁设苜州岛、增加和删除列设置组合单厄格介斤取消组合单元格分解数据项打开数据项管理窗口数据项批量定义与绑定打开数据项批量定义与绑定窗口数据记采集打开址采集窗【J名称定义弹山的定义名称时话框中进行变醋设置数据绑定打开数据绑定窗【J编辑表格审核公式打开审核公式管理窗口数捌阼戢数据向导定义本数掘农时府的数据庠炭名称和表』|键工具离线填报离线状态r进ij报农数据的填报4.1.2.1文件菜单(1)新建使川本功能,用户可以建立一张新表格,定义表格格式和表格数据模型。
第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.javapackage 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.javapackage com.qhtf.apps.basicinfo.rp;public abstract class AbstractJReportPrinter {public abstract void print()throws Exception;}(3) JReportPrinterFactory .javapackage 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.javapackage 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为打印类==--%><form name="printPdfForm" action="printPdfAction.do" method="post"target="_blank"><%--==使用IReport制作报表时设置的条件参数==--%><input type="hidden" name="unitID" value=""><input type="hidden" name="unitName" value=""><%--==sourceFile 为报表原文件前缀名,此名必须与IReport编译后的文件同名==--%><input type="hidden" name=sourceFile value="pdfUnitList"><%--==destFile 为道出的报表文件前缀名,此名不须与IReport编译后的文件同名但建议为同名==--%> <input type="hidden" name="destFile" value="pdfUnitInfoList"><%--==报表打印action的方法名==--%><input type="hidden" name="method" value="printPdf"></form><script language="javascript">function printPdf() {document.all. printPdfForm.unitID.value =document.all.queryEmployerForm.aab003.value;document.all. printPdfForm.unitName.value =document.all.queryEmployerForm.aab004.value;document. printPdfForm.submit();}</script><%--==End 打印单位基本信息列表==--%>§2.3.2 修改struts配置文件打开/WEB-INF/struts-basicinfo.xml,在文件中加入<!--==Begin==--><!--==path为报表输出路径==--><!--==contextRelative为相对上下文标识,不添加此属性默认值为'false'==--><action scope="request"parameter="method"path="/printPdfAction"type="com.qhtf.apps.basicinfo.rp.PrintPdfAction"><forward name="unitInfoList"</action><!--==End==-->§2.3.3 PDF打印实现(5) JreportPdfImpl.javapackage 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.javapackage com.qhtf.apps.basicinfo.rp;import java.sql.Connection;import java.util.Map;import 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.javapackage 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 DispatchAction;import mons.log.LogHelper;public abstract class PrintAction extends BizDispatchAction {// 定义logprivate LogHelper log = new LogHelper(this.getClass());public abstract ActionForward print(ActionMapping mapping, ActionForm actionForm, HttpServletRequest request, HttpServletResponse response)throws Exception;}(8) PrintPdfAction.javapackage 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 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类==--%><form name="printExcelForm" action="printExcelAction.do" method="post"target="_blank"><%--==使用IReport制作报表时设置的条件参数==--%><input type="hidden" name="unitID" value=""><input type="hidden" name="unitName" value=""><%--==sourceFile 为报表原文件前缀名,此名必须与IReport编译后的文件同名==--%><input type="hidden" name=sourceFile value="pdfUnitList"><%--==destFile 为道出的报表文件前缀名,此名不须与IReport编译后的文件同名但建议为同名==--%> <input type="hidden" name="destFile" value="pdfUnitInfoList"><%--==报表打印action的方法名==--%><input type="hidden" name="method" value="printExcel"></form><script language="javascript">function printExcel() {document.all. printExcelForm.unitID.value =document.all.queryEmployerForm.aab003.value;document.all. printExcelForm.unitName.value =document.all.queryEmployerForm.aab004.value;document. printExcelForm.submit();}</script><%--==End 导出单位基本信息列表==--%>§2.4.2 修改struts配置文件打开/WEB-INF/struts-basicinfo.xml,在文件中加入<!--==Begin==--><!--==path为报表输出路径==--><!--==contextRelative为相对上下文标识,不添加此属性默认值为'false'==--><action scope="request"parameter="method"path="/printExcelAction"type="com.qhtf.apps.basicinfo.rp.PrintExcelAction"><forward name="unitInfoList"path="/reports/unit/pdf/pdfUnitInfoList.xls"contextRelative="true"/> </action><!--==End==-->§2.4.3 导出EXCEL报表实现(9)JreportExcelImpl.Javapackage 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 stubreturn sourceFile;}public String getDestFile() {// TODO Auto-generated method stubreturn destFile;}public Connection getConnection() {// TODO Auto-generated method stubreturn connection;}}(10) JreportExcelPrinter.javapackage 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 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.javapackage 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 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中的使用说明1WEB服务器配置使用本报表系统需要在WEB服务器中配置WEB应用和应用中用到的数据库连接池。
下面以TOMCA T为例进行说明:1、修改[tomcat]/conf/server.xml文件,在</Host>行之前插入如下的一段标签:/report" docBase="<value></parameter><parameter><name>password</name><value></parameter><parameter><name>driverClassName</name><value></parameter><parameter><name>url</name><value></parameter></ResourceParams></Context>以上用粗体表示的部分为应进行修改的内容。
如果在应用中要用到多个数据库,则应重复<Resource …… </ResourceParams>之间的内容。
2、要将相应的数据库JDBC驱动程序包放入[tomcat]/common/lib目录中2WEB应用配置2.1文件部署JA V A类的部署:如果报表系统提供的是jar文件,则将之放在WEB应用的WEB-INF/lib 目录中,如果提供的是呈目录结构的class文件,则将com目录和color.properties文件放到WEB应用的WEB-INF/classes目录中。
将runqianReport.tld文件放到WEB应用的WEB-INF目录中。
将xrq_license.dat文件放到WEB应用的WEB-INF目录中。
vue生成pdf el-table分页隔断处理概述及解释说明1. 引言1.1 概述在现代Web开发中,生成PDF文档和处理分页数据是常见的需求。
Vue.js 作为一款流行的JavaScript框架,具有很强的扩展性和灵活性,对于实现这些功能来说是一个理想的选择。
而EL-Table作为Vue.js中常用的表格组件,在处理大量数据和分页展示方面也具有一定优势。
1.2 文章结构本文将围绕"Vue生成PDF"和"EL-Table分页隔断处理"两个主题展开讨论。
首先介绍Vue.js以及一些可以用于生成PDF的工具,然后深入探讨了如何使用Vue.js实现生成PDF功能的方法。
接下来我们会介绍EL-Table是什么、它可能遇到的分页问题以及如何解决这些问题。
在实例说明部分,我们将通过示例需求和背景介绍引出一个具体场景,并演示如何利用Vue.js生成PDF以及处理EL-Table分页隔断的方法。
最后,在结论与总结部分对以上内容进行总结评价,并提出未来发展方向和改进建议。
1.3 目的本文旨在帮助读者深入理解利用Vue.js生成PDF和处理EL-Table分页隔断问题的方法,并提供相关代码示例和实例说明,以帮助读者更好地掌握这些技术。
通过阅读本文,读者将能够掌握Vue.js生成PDF的基本原理和实践方法,以及处理EL-Table分页隔断问题的技巧和策略。
期望本文能为读者在开发中遇到相似问题时提供参考和借鉴。
2. Vue生成PDF2.1 介绍Vue.jsVue.js是一种流行的JavaScript前端框架,用于构建用户界面。
它具有简洁的语法和易于使用的特性,使开发者能够快速构建交互丰富的应用程序。
Vue.js 采用了组件化开发的思想,允许开发者将页面拆分为独立、可复用的组件,提高了代码的可维护性和重用性。
2.2 PDF生成工具在Vue.js中实现生成PDF需要借助一些PDF生成工具。
1概述面对管理系统中复杂的数据,报表作为数据管理工具,帮助用户快速掌握原始数据中的基本关系,直观的让用户感受到数据的变化,使用户对事务最新的形势状况能够在第一时间掌握并做出正确的决策判断。
传统处理报表的方式是使用Excel,Word等编辑软件进行人为的数据统计。
这种人工统计数据、填写报表的方式不仅效率低下,还容易出错。
为了提高单位工作人员协同办公效率,减少传统报表在生成和使用时所带来的不足之处。
越来越多的单位选择使用信息化办公,即只向系统数据库录入一次数据,再根据数据库中已有数据集进行数据处理、报表打印。
2浏览器直接生成报表利用浏览器自带的打印功能实现报表打印,无疑是所有实现打印报表功能方式中最直接的。
客户端不用下载其他额外的插件,不需要多余的环境配置,便可以很方便的通过浏览器直接实现报表功能打印。
利用浏览器直接生成报表主要有以下4个步骤:步骤一:建立数据库连接。
DBUil db=new DBUtil();步骤二:用JavaBean定义相应的数据操作语言,获取数据集。
public List getAlInfomationO{List infomations=null://初始化报表数据集合infomationsSuing sql="select*from infomations"; //生成数据库查询语句infomations=db.getList(sql,null);//将数据集放入//集合infomations中retum infomations;}步骤三:根据制作报表页面需要的样式。
<IDOCTYPE htm><html>//报表页面设计<head><meta http equiv="Content-Iype"><title></tite><head>//设置网页标题<body><body>//设计网页内容,例如:表格,div流//对象</html>步骤四:通过Jsp获取数据库中报表参数集并向前端传递。
INFORMATION TECHNOLOGY 信息化建设摘要:报表是信息浏览、分析、打印的有力工具,是SCADA 系统的一个重要组成部分。
基于Web开发的报表具有高性能、开放性和扩展性等优点,在各行各业得到了广泛的应用。
论文研究了Web 报表的系统结构、生成机制及设计与实现,介绍了JAVA开源报表引擎JasperReport 与IReport的相关技术。
基于Web 报表的设计实现了动态数据报表与图形报表的生成、查询与在线打印,在SCADA 系统中得到了良好的应用。
关键词:JasperReport;iReport;SCADA系统;开源;Web报表人类社会已进入信息化时代,数字信息资源在国民经济社会发展中扮演着举足轻重的角色,各行业希望可以快捷地将数据库中所关心的数据以其它相关的信息直观展现,以便于决策分析,而报表的开发就可以实现这一需求。
由于众多分布式B/S架构系统的应用,用户需要远程对大量的分布式数据进行综合统计分析,所以基于Web架构方式设计开发的报表系统是最为简洁和高效。
考虑到SCADA系统报表业务量巨大,报表的设计如果按照传统的设计方式,不仅开发成本和运行成本高,而且开发周期长。
而iReport的出现,将报表从设计到发布的过程变得更为简单[1]。
本系统所采用的是基于浏览器方式的Web报表系统,它可以满足SCADA系统操作人员方便的查看各个场站的信息。
一、JasperReport与 iReport技术对比分析JasperReports是一个功能强大的报表生成开发工具,它可以将丰富的内容输出到展示端或生成PDF、HTML、 XLS、CSV和XML文件,并提供在线报表打印。
JasperReports基于Java编写,并可在各种Java应用中用来生成内容丰富的动态数据。
它是以一种灵活而简便的方式为用户提供创建导向式的Web页面[2-5]。
JasperReports通过XML文件,来描述定义报表设计,以JDBC连接的方式来获取关系数据库数据内容。
Web报表FineReport实现报表部署流程一、报表应用目录结构1.web应用的目录结构报表部署分为两种,一是报表作为一个独立的应用独立部署;另一个是集成到现有应用即嵌入式部署。
不管哪种部署方式,他们的目录结构都是类似的。
如下图我们对未包含报表的应用及包含报表的应用目录作一个比较:2.独立部署FineReport安装目录下的WebReport目录就是一个标准的应用,因此,若用户希望将报表作为一个独立的应用进行部署的话,可以直接使用WebReport目录进行独立部署。
3.嵌入式部署若用户希望将报表集成到自己的应用中的话,则可以对应上图“部署报表后的应用”目录结构,将对应的报表文件拷贝到相应目录即可,请看嵌入式部署。
二、独立部署(发布)1.发布应用应用通常以文件夹或war包得形式发布,Web应用服务器不同,发布方式不同:如Tomcat服务器只需要将Web应用拷贝到%FR_HOME%\webapps目录下,重启tomcat即发布成功;而Websphere服务器需要先将Web应用打成war包,然后在websphere控制台进行配置发布。
各个服务器下部署报表应用我们会在下面章节中详细介绍。
2.独立部署(发布)部署就是将FineReport应用集成到新的Web工程把FineReport_8.0安装目录下的WebReport文件拷贝到%Tomcat_HOME%/webapps/下:应用名WebReport可以根据需要改变,如可以改为“FineReport”。
3.访问报表报表应用发布(部署)成功后,便可以在客户端浏览器中访问了。
在客户端浏览器中输入访问地址http://ip:端口/appName/ReportServer?reportlet=GettingStarted.cpt,发送请求给Web应用服务器如tomcat;Web应用服务器会将请求信息发送给报表servlet;报表servlet根据请求信息,如获取希望查看的模板名称reportlet=GettingStarted.cpt,在后台计算生成GettingStarted.cpt的内容,返回给Web应用服务器;最后Web应用服务器将结果返回给客户端浏览器,浏览器将报表结果呈现给我们。
我已经很久没有亲自使用IReport开发报表了,记得当时用时还是零点几版本,转眼这么久过去了(估计2年了吧),今天公司要开发报表,而新同事们都不会,只好亲自上手做一个,也算是Demo吧。
再次到的官网下了一个IReport3.7.2的最新版,惊奇发现现在这东西好用多了,完全是Netbeans 框架实现的(本人可以Netbeans的忠实粉丝,一直用Netbeans开发)操作方便、人性化。
好了下面我就逐步来介绍IReport的使用,以后还打算写一个在项目中使用报表的例子。
1、下载IReport(既是废话,又套路,呵呵,就从这里开始吧)官网下载地址是:/plugins/project/project_home.php?projectname=ireport2、安装IReportIReport安装十分简单,这里就略了,否则真要被人拍砖了。
3、运行IReport直接在桌面上双击IReport图标就可以了,IReport3.7.2的闪屏还是蛮好看的,大家看看吧,如下图:进入IReport主界面后,大家会发现其和Netbeans真的是很像,毕竟一个遗传基因的,呵呵。
还是中文版的哦。
4、使用报表向导我将以一个简单报表的制作来讲解IReport制作报表时的一些常用项。
选择菜单中”文件“——>”New“(如图所示):进入报表设计的向导程序(如下图所示),在向导程序中可以选择报表模板,其它的(如风格、图表等)目前都不能用,我就选择”Blank A4“:选择”Launch Report Wizard“,系统引导你下一步(如下图所示)。
在这一步中在”Report Name“中输入报表的文件名,”Location“中指定报表文件存储目录。
选择”下一步“按钮,系统引导你配置数据源模式(如下图所示),在这里系统默认提供两种数据源模式”Empty DataSource“和”Sample Database(HSQLDB test)“,我在这里新建一个自己的数据源模式——”Javabean DataSource“。
基于Web的PDF报表实现技术
摘要:本文讲解了基于web的pdf格式报表实现技术,同时介绍了报表实现的重要性,提出了报表实现技术的发展趋势。
关键词:pdf报表;web
中图分类号:tp393 文献标识码:a 文章编号:1007-9599 (2012)24-0078-02
1 基于web的pdf报表实现的重要性
新型数字化系统具有系统管理、计划与调度管理、参数监测与分析、资源管理、质量管理、报表管理等几大功能模块。
其中报表管理是系统非常重要必不可少的部分,在应用系统的设计实现中占有十分突出的地位。
它包括生产日报、生产月报、半成品收发月报,质量完成情况报表等功能。
它解决了新型数字化系统基于web的瘦客户端不能操作客户端打印机的问题,使基于web系统的报表打印成为可能。
2 基于web的pdf报表的java实现方法
2.1 itext组件简介
itext是一款开源的免费java组件,用于创建和生成pdf文档,itextapi使得java开发人员可以利用编程来创建pdf文档,它有一系列强大功能。
2.2 pdf报表的java实现方法
下面以新型数字化系统的生产月报为例,具体说明基于web的pdf 格式报表技术的实现
(1)首先导入pdf格式报表所必须的itext组件的类,支持pdf、fdf文档,生成文档模板:
importcom.lowagie.text.document;
支持使用各种字体:
importcom.lowagie.text.pdf.basefont;
importcom.lowagie.text.font;
支持使用各种元素:
importcom.lowagie.text.element;
支持使用不同的页面大小:
importcom.lowagie.text.pagesize;
支持创建pdf表格:
importcom.lowagie.text.pdf.pdfptable;
支持写入pdf文档:
importcom.lowagie.text.pdf.pdfwriter;
支持设置pdf单元格:
importcom.lowagie.text.pdf.pdfpcell;
支持设置不同的段落格式:
importcom.lowagie.text.paragraph;
(2)设计pdf报表
首先生成文档,并设计文档的纸张大小a2,上边距46,下边距72左边距108右边距108。
documentdocument=newdocument(pagesize.a2,46,72,108,
108);
然后设计字体的基本格式:
bfchinese=basefont.createfont
(”stsong-light”,”unigb-ucs2-h”,
basefont.not_embedded);
为文档设计字节输出流:
bytearrayoutputstreambuffer=newbytearrayoutputstream();写入已经生成好的文档:
pdfwriter.getinstance(document,buffer);
打开文档:
document.open();
建立表格,并设置表格的列数为5:
pdfptabledatatable=newpdfptable(5);
设计表头的宽度:
intheaderwidths[]={5,15,15,15,5}
datatable.setwidths(headerwidths);
设计数据表的宽度百分比为100:
datatable.setwidthpercentage(100);
设计数据表单元格的垫衬为5:
datatable.getdefaultcell().setpadding(5);
设计数据表单元格的边界宽度为1:
datatable.getdefaultcell().setborderwidth(1);
设计数据表单元格内容为中对齐:
datatable.getdefaultcell().sethorizontalalignment(element.align_center);
设计表头:车间生产月报统计
stringss=“车间”+”生产月报统计表”;
paragraphpg=newparagraph(ss,fontchinese1);
pg.setalignment(element.align_center);
pg.setspacingafter(20);
document.add(pg);
设计表格的列标题:
pdfpcellh1=newpdfpcell(newparagraph(”序号”,fontchinese));
h1.sethorizontalalignment(element.align_center);pdfpcellh2=newpdfpcell(newparagraph(”申报日期”,fontchinese));
h2.sethorizontalalignment(element.align_center);pdfpcellh3=newpdfpcell(newparagraph(”车间”,fontchinese));
h3.sethorizontalalignment(element.align_center);pdfpcellh4=newpdfpcell(newparagraph(”产品代号”,fontchinese));
h4.sethorizontalalignment(element.align_center);
pdfpcellh5=newpdfpcell(newparagraph(”产品名称”,fontchinese));
加入列标题到数据表的单元格:
datatable.addcell(h1);
datatable.addcell(h2);
datatable.addcell(h3);
datatable.addcell(h4);
datatable.addcell(h5);
循环将数据值插入到数据表单元格中:
for(inti=0;i<rmlist.size();i++){
pdfpcellsn=newpdfpcell(newparagraph(newinteger
(i+1).tostring(),fontchinese));
sn.sethorizontalalignment(element.align_center);datatable.addcell(sn);
将数据表添加到文档中,并关闭文档:
document.add(datatable);
document.close();
byte[]bytes=buffer.tobytearray();
这样以新型数字化车间的生产月报表为例的pdf格式报表就基本实现了。
2.3 基于web的pdf格式报表的软件实现
新型数字化系统在有客户机/服务器体系结构支持的基础上,采
用了zk的开发模式,此开发模式是一个基于事件驱动和组件的框架,它为web应用提供了丰富的用户接口。
zk使web应用的开发环境和桌面应用开发环境很类似,客户端组件和服务端组件之间是保持一致的。
无论何时当修改一个运行在服务端的组件时,客户端的组件也会通过zk的引擎在浏览器上进。
系统的实现主要有以下步骤:
搭建zk开发环境
安装javaservlet容器,建议安装apachetomcat
配置web.xml文件此文件对web应用如何部署进行了描述
配置zk.xml文件此文件对应用进行了自定义的配置
在xml编辑器中设置zul文件扩展名的关联
创建新型数字化系统web工程
编写新型数字化系统zk源代码
运行新型数字化系统应用程序
数字化车间生产月报界面中,输入统计日期最早日期和最晚日期,点击统计按钮,出现文本下载的对话框,如图1点击打开。
图1 生产月报统计
出现如下界面:
图2 生产月报统计结果
其表格的实现在上一节已经介绍。
其中此报表具有pdf格式报表的所有功能。
例如:打印、预览、查找,检索等功能。
3 结束语
报表实现技术在java编程中一直被看成是一个难点,但是近年来随着编程技术的高速发展,报表实现技术取得了突破性进展,本文只是基于web的pdf格式的报表实现技术,希望能起到抛砖引玉的作用,有助于实现更多的基于web报表的格式,为新型数字化生产提供更大的作用。
参考文献:
[1]谭传恩.java实现web报表打印功能[j].电脑学习,2005.
[2]刘利军.j2ee的web报表系统的设计与实现[j].计算机技术与发展,2007.。