基于JavaReport的Web报表开发
- 格式:doc
- 大小:336.50 KB
- 文档页数:28
1.1跟我学JasperReports报表框架——使用Report Wizard向导创建Web 报表的应用示例
1.1.1使用Report Wizard(向导)创建报表
1. 设置数据查询
File -> Report Wizard
选择后,将出现下面的对话框,并输入查询语句。
2、选择需要的字段
3、选择报表的布局模板
最后,将产生出下面的风格的报表。
保存该文件
4、编译和预览
(1)编译
选择“建立”的“编译”选项
在编译路径下生成一个jasper文件。
同时和它在同一目录下IReport会自动生成一个文件名为*.java,里面主要是一些报表元素,如Field,Parameters,Variables的定义,以及一些求值表达式。
(2)预览
在“建立”菜单下选择预览模式,然后选择“执行报表(使用动态连结)”。
将产生出下面的结果
报表填充阶段的输出通常是一个JasperPrint对象,如果把它保存在磁盘上,通常以一个.jrprint文件的形式存在。
JasperReport拥有一个内置的查看器,用来查看用内置的XML 导出器(XML exporter)获得的XML格式的报表文件。
这个查看器就是以前提到过的net.sf.jasper.niew.JRViewer------ 一个基于Swing的应用程序组件,用户可以通过继承这个类
来定制自己所需的查看器。
图示ireport中使用javabean作数据源开发基于jasperreports报表过程图示ireport 中使用javabe an作数据源开发基于jasperreports报表过程——学习笔记系列之ireport起步xmlin本文不讲原理,因为网上的资源很多,本文以一个简单的日销售报表为例,记录在 ireport 中使用 javabe an 作数据源开发基于 jasperreports 报表过程 .一.准备工作1. 正确安装 jdk2. 到去下载 ireport, 本文使用 1.3.1 版本,解压 iReport 在任意目录,解压后的文件里面有一个 iReport.bat ,通过双击运行。
3. 到 /index.html 下载 jasperreport, 本文使用的是 1.3.1 版本,解压到任意目录,开发中需要使用其中的 jasperreports-1.3.1.jar 、 commons-logging-1.0.2.jar 、 commons-collections-2.1.jar ,使用 bean 做为数据源还需要 commons-beanutils-1.7.jar, 如果需要生成 pdf 文件 , 还需要 itext-1.3.1.jar 、 iTextAsian.jar, 如果使用动态编译 jrxml 文件,还需要 commons-digester-1.7.jar 。
二.创建 javabean1. 创建 DailySales.java, 一个简单 VO bean 。
import java.io.Serializable;public class DailySales implements Serializable{private static final long serialVersionUID= 1L;private String productNo;private String productName;private int number;private int money;private int id;public DailySales(String productNo, String productName, int number, int money){this .productNo= productNo;this .productName= productName;this .number= number;this .money= money;}public String getProductNo(){return productNo;}public void setProductNo(String productNo){this .productNo= productNo;}public String getProductName()return productName;}public void setProductName(String productName) {this .productName= productName;}public int getNumber(){return number;}public void setNumber(int number){this .number= number;}public int getMoney(){return money;}public void setMoney(int money){this .money= money;}public int getId(){return id;}public void setId(int id)this .id= id;}}2 .生成数据源import java.util.Arrays;import java.util.Collection;/*** 简单工厂类,取得数据* @author xmlin**/public class DailySalesFactory{//为了在ireport 中能够测试,必须使用static方法public static Collection<DailySales> getBeanCollection() {//数据源的生成,通常调用dao 操作List<DailySales> data = new ArrayList<DailySales>();for (int i = 0; i < 100; i++){data.add(new DailySales("货号"+ i, "产品"+ i, i, i * 100)); }return data;}}三.使用 ireport 开发报表样式1.新建一个项目。
好用的11款开源报表工具推荐开源报表工具,即开放源代码的报表软件,开源就是要用户利用源代码在其基础上修改和学习的。
它的好处多多:成本低,满足基本报表需求,有专门的讨论区可以解决用户问题……同时,缺点也很明显:无法满足复杂的报表需求,bug 不能及时解决,更新速度慢。
无论是选择开源报表工具还是购买商业报表,都要按需选择。
本文就来推荐一些好用的开源报表工具和免费报表工具。
1.JasperReportsJasperReports是一个基于Java的开源报表工具,是当今Java开发人员最常用的报表工具。
其报表分析功能可以嵌入web和移动应用程序,支持PDF、HTML、XLS、CSV和XML文件输出格式。
其开源软件还可以管理其付费的商业智能报表分析平台。
2.BIRT(百灵报表)BIRT是为web应用程序开发的基于eclipse的开源报表系统。
它自带报表设计器,可视化操作;报表引擎基于OSGI框架,易于扩展和集成,并且可以轻松地与主流web应用服务器(如Tomcat、Websphere、Weblogic、JBoss)集成。
提供开放的API和辅助开发功能;支持多维数据表。
3.Pentaho ReportingPentaho Reporting软件平台集成了许多开源报表工具,允许用户创建PDF、Excel、HTML等多种形式的数据报表,支持多数据源。
它注重数据处理层,有各种数据显示方法,甚至RSS输出。
它的架构非常类似于spagoBI,但pentaho喜欢将自己的东西称为一个解决方案。
4.ExcelReportExcelReport是一款基于NPOI开发的报表引擎组件。
NPOI是一个开源的C#,让你不需要在服务器上安装微软的Office,就可以读写Excel、WORD等微软OLE2组件文档的项目。
ExcelReport结合NPOI进行数据处理的优点,进一步简化了生成Excel报表的过程。
5.SupersetSuperset 是Airbnb的开源数据可视化工具,主要面向数据分析师,用于数据可视化。
基于Java的轻量级报表工具 ARTART是一个轻量级的,基于web的报表引擎。
定制容易,支持图形报表,支持通过插件把结果导出为各种格式。
Art的配置文件较少项目实施较简单ExcelReport 是什么?ExcelReport是一款基于Excel的轻量级地报表生成工具,它通过用户定义报表模板文件,定义数据源,并配置相应的配置文件,就可以通过页面向指定Servlet请求输出报表,其生成的报表是一个excel文件。
通过模板文件的方式来生成Excel文件,可以让程序员从生成特定格式的Excel文件的输出格式控制,以及Excel文件读写等纷繁复杂而又容易出错的细节中解放出来,使得程序员只需组装自己的数据源,而根本不需要关心如何去生成Excel文件,如何用程序去控制最终的文件输出效果,从而大大增强了程序的可维护性,因为很多的报表输出格式的修改只需通过模板文件的修改就可以实现,而无需改动程序。
同时该报表工具又提供一些灵活的特性来使得用户可以自由控制报表的输出过程。
ExcelReport的灵活性数据源的自定义:用户可以自己定义数据源以替代默认实现,例如,我们可以编写一个自己的数据库数据源,通过定义该数据源我们可以利用现有系统的数据库连接及数据检索框架等。
嵌入报表数据处理类:用户可以嵌入自己报表数据处理类(通过配置文件配置),通过嵌入用户自己的报表数据处理类,报表工具给用户提供了一个入口让用户参与报表的生成过程。
比如,用户可以在生成报表前来组合自己的数据源,在这里用户完全可以充分利用现有系统的相关业务类来生成自己的数据源。
插入查询监听器:用户可以插入自己的查询监听器,通过监听数据源的查询请求来做相关数据的检索及处理等工作(该功能在主从报表中尤其有用)。
插入字段监听器:通过插入字段监听器,使得用户可以参与报表的输出过程,控制报表的具体输出的数据。
目前它具有那些功能?1. 卡片式报表的支持。
2. 列表式报表的支持。
报表设计基础及JasperReort,JFreeChart简明教程摘要本文先从通用的角度定义了与报表相关的各种概念。
然后介绍了怎么应用JasperReport和Ireport设计报表,最后介绍了怎么使用JfreeChart生成图形报表。
文章中出现的很多概念和定义都出自作者自己的思考,没有通用性,在阅读时请不必深究它的准确性。
1、什么是报表,什么是报表应用程序1.1 什么是报表报表是数据统计结果的呈现。
常见的报表格式有表格、数据立方体(多维表)、曲线图、直方图、饼图等等,其中以表格最为常见。
总结各种报表的共同特征,可以这样来定义报表的结构。
一般来说,Report = Title + Page(s) + Report FooterPages(s)表示一个报表可能有一页或多页Page = PageHeader + Content + PageFooterContent则代表真正的数据,它一般由若干列和若干行组成。
Content = ColumnHeader + Row(s) + ColumnFooter一个报表的结构可以表示为下图所示的树形:这棵树中的所有叶结点,就构成了报表的实体。
一个叶结点一般称作一个Band,从上到下排列,一个Report的组成如下图所示:下图是一个报表的例子。
它有3页。
1.2 计算机上的报表与报表应用程序可以利用计算机处理数据和界面设计的功能来生成、展示报表。
计算机上的报表的主要特点是动态化。
已经有各种各样的计算机报表设计工具,它们一般提供格式设计和数据填充等功能。
广义地讲,EXCEL、WORD、甚至写字板都可以算作报表设计工具,但是它们没有定义专门的报表结构,也无法实现报表格式和报表数据的动态决定,无法实现计算机报表的“动态化”特性,也就是说不能用它来开发“报表应用程序”,所以它们一般不能视为报表设计工具。
而所谓报表应用程序,指的是能够在运行时动态地决定报表格式和报表数据的应用程序,它必须要实现数据格式和数据内容之间的分离,也就是报表和数据源之间的分离。
第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图。
一.实验目的实现学生信息管理系统,学生登录身份验证,信息的录入和信息的查询。
并在实验的过程中熟练掌握网页设计的各种工具,如Dreamwawer,tomcat等,提高网页设计的能力。
二.实验过程1.实现基本页面的设计,使用的工具:Dreamwawer。
2.实现服务器端程序设计,对页面数据进行处理。
3.与数据库进行连接,实现对学生数据的操作,如查询,存储,修改等。
4.进一步完善系统,如页面的美化等等。
本系统有三个模块组成,学生登录模块,学生信息数据库模块,出错处理模块,学生登录以后输入相应的学号,密码,登陆学生信息界面,队学生的成绩等基本信息进行查询,若学号或密码出错,或者不符合,弹出相应的出错界面。
本系统采用Jsp+JavaBean+SQL2000设计方式,其中JavaBean担当数据库连接以及逻辑控制,这样在Jsp就省去了繁琐的数据库连接,以及复杂的逻辑控制,使Jsp成为表示逻辑。
三.运用软件Windows环境下的Tomcat7.0,SQL2000。
四.过程截图:1.学生登录界面的设计:2.与数据库系统的连接:3.实现对学生数据的操作:4.对学生数据的保护的完善。
1,验证学生身份:Student:import java.sql.*;public class student {private String name;private String password;private String id;private String jiguan;private String sex;private String dep;public void setDep(String s){dep=s;}public String getDep(){return dep;}public void setSex(String s){sex=s;}public String getSex(){return sex;}public String getId() {return id;}public void setId(String id) {this.id = id;}public String getName() {return name;}public void setName(String name) { = name;}public String getPassword() {return password;}public void setPassword(String password) { this.password = password;}public String getJiguan() {return jiguan;}public void setJiguan(String jiguan) {this.jiguan = jiguan;}public boolean hasLogin(){ //检查该学生是否已经注册boolean f=true;String sql="select id from student where id ='"+id+"'";sqlBean db =new sqlBean();try{ResultSet rs=db.executeQuery(sql);if(rs.next()){ f=false;}else{ f=true;}}catch(Exception e){ e.getMessage();}return f;}public ResultSet getStudent(){String sql="select * from student ";sqlBean db= new sqlBean();ResultSet rs = db.executeQuery(sql);return rs;}public void updateStudent(){String sql="update student "+" set name='"+name+"',sex='"+sex+"',department='"+dep+"', "+"password='"+password+"',jiguan='"+jiguan+"' "+" where id='"+id+"' ";sqlBean db= new sqlBean();db.executeInsert(sql);}public void deleteStudent(){String sql="delete from student where id ='"+id+"' ";sqlBean db= new sqlBean();db.executeDelete(sql);}public void addStudent() {String sql="insert into student(name,password,id,sex,department,jiguan) "+"VALUES('"+name+"','"+password+"','"+id+"','"+sex+"','" +dep+"','"+jiguan+"')";sqlBean db =new sqlBean();db.executeInsert(sql);}}2.登陆界面:public class login {private String id;private String password;private String kind;private int flag=0;public int getFlag(){if(kind.equals("student")) flag=1;if(kind.equals("teacher")) flag=2;if(kind.equals("admin")) flag=3;return flag;}public String getId() {return id;}public void setId(String id) {this.id = id;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getKind() {return kind;}public void setKind(String kind) {this.kind = kind;}}3.出错处理:import java.sql.*;import java.io.*;public class marking {String tea_id;String coursename;String score;String stu_id;public void setStu_id(String id){this.stu_id=id;}public String getStu_id(){return stu_id;}public void setScore(String sc){this.score=sc;}public String getScore(){return score;}public void setTea_id(String id){this.tea_id=id;}public String getTea_id(){return tea_id;}public void setCoursename(String c){this.coursename=c;}public String getCoursename(){return coursename;}public ResultSet getStudents(){String sql=" select stu_id "+"from enrol "+"where accept=1 "+"and class_id IN( "+"select classes.id "+"from classes ,course "+"where course.id=classes.cour_id "+"and ='"+coursename+"' "+"and classes.tea_id='"+tea_id+"') ";sqlBean db = new sqlBean();ResultSet rs=db.executeQuery(sql);return rs;}public void addmark(){int mark=0;int mark1=0;String sql="select mark from student where id='"+stu_id+"' ";sqlBean db = new sqlBean();try{ResultSet rs = db.executeQuery(sql);if(rs.next()) { mark = rs.getInt("mark");}}catch(SQLException ex){System.err.println("学生成绩查询有错误:"+ex.getMessage() );System.out.print("学生成绩查询有错误:"+ex.getMessage());//输出到客户端}sql="select mark from course where name='"+coursename+"' ";try{ResultSet rs=db.executeQuery(sql);if(rs.next()){ mark1=rs.getInt("mark"); }}catch(SQLException ex){System.err.println("成绩查询有错误:"+ex.getMessage() );System.out.print("成绩查询有错误:"+ex.getMessage());//输出到客户端}mark = mark+mark1;sql="update student set mark='"+mark+"' where id='"+stu_id+"' ";db.executeInsert(sql);}public void updatemark(){int temp=0;try{temp = Integer.parseInt(score) ;}catch(NumberFormatException e){System.err.println("成绩输入有错误:"+e.getMessage() );System.out.print("成绩输入有错误:"+e.getMessage());//输出到客户端}if(temp>60){addmark();}String sql="update enrol set score='"+temp+"' "+ "where stu_id='"+stu_id+"' "+"and class_id IN( "+"select classes.id "+"from classes,teacher,course "+"where classes.tea_id='"+tea_id+"' "+"and course.id=classes.cour_id "+"and ='"+coursename+"' ) ";sqlBean db = new sqlBean();db.executeInsert(sql);}4,连接到sql数据库:import java.sql.*;public class determin{String sql="";String stu_id="";String tea_id="";String coursename="";public String accept(){sql="update enrol set accept=1 "+"where stu_id='"+stu_id+"' "+"and class_id IN ( "+"select classes.id "+"from classes,course "+"where ='"+coursename+"' "+ "and classes.tea_id='"+tea_id+"' and course.id=classes.cour_id) ";sqlBean sqlbean= new sqlBean() ;sqlbean.executeInsert(sql);return stu_id;}public void setTea_id(String id){this.tea_id=id; }public String getTea_id(){return tea_id;}public void setStu_id(String ss) {this.stu_id=ss;}public String getStu_ids(){return stu_id;}public void setCoursename(String ss){this.coursename = ss;}public String getCoursename(){return coursename;}public ResultSet getStudent(String id){sql="select * from student where id='"+id+"'";sqlBean sqlbean = new sqlBean();ResultSet rs = sqlbean.executeQuery(sql);return rs; }public ResultSet getStu_id(){sql="select enrol.stu_id "+" from enrol ,classes,course "+"where classes.cour_id=course.id "+"and enrol.class_id=classes.id "+"and( enrol.accept='0' or enrol.accept=null )"+" and ='"+coursename+"' "; sqlBean sqlbean = new sqlBean();ResultSet rs = sqlbean.executeQuery(sql);return rs;}}六.心得体会:通过这次实验,让我深刻体会到java所具有的强大的功能,以及java开发web的技术servlet和jsp技术有着和其他在这方面的技术的先进之处。
ureport2报表详细使⽤⼀、报表简介UReport2是⼀款基于架构在Spring之上纯Java的⾼性能报表引擎,通过迭代单元格可以实现任意复杂的中国式报表。
在UReport2中,提供了全新的基于⽹页的报表设计器,可以在Chrome、Firefox 等各种主流浏览器运⾏(不⽀持IE)。
使⽤UReport2,打开浏览器即可完成各种复杂报表的设计制作。
⼆、主体功能1. UReport2⽀持创建数据源、添加数据集,并对数据集进⾏函数、表达式处理;(参考【数据处理】)2. UReport2⽀持对数据集形成可视化报表,包括饼状图、柱状图、曲线图等等(参考【图表展⽰】)三、优缺点阐述优点:(1)开源、免费,集成即可使⽤;(2)轻量级、易集成,⼯程中添加依赖即可进⾏集成使⽤;(3)⽀持多函数处理,包括常⽤函数(sum、count、max、min、avg)、数学函数、字符串函数、⽇期函数等等;(4)⽀持多种图表展⽰,包括饼状图、柱状图、曲线图、圆环图、雷达图、散点图等等;缺点:(1)⼯程在使⽤过程中经常出现空指针或者其他报错;(2)UReport2部分功能不可⽤,包括导出及多条件表达式SQL查询等;(3)⽀持数据源类型少,当前⽀持:mysql、SQLserver、oracle、db2等四、集成及配置UReport2的设计器是基于⽹页的,配置好⼀个项⽬,也就完成了报表设计器的安装。
因为 UReport2是⼀款纯Java的报表引擎,所以它⽀持现在流⾏的所有类型J2EE项⽬,下⾯将具体介绍基于maven的SpringBoot⼯程如何集成UReport2 ,并基于当前⼯程进⾏⼀系列的数据处理及报表展⽰。
4.1 创建springboot⼯程1、如果当前本地⽆springboot⼯程,提供下载地址:2、基于已下载的springBoot⼯程,修改index.html⽂件内的外部js⽂件路径,将../修改为../../(原始路径不正确);4.2 添加依赖1、在springBoot⼯程的pom⽂件dependencies中添加依赖;<dependency><groupId>com.bstek.ureport</groupId><artifactId>ureport2-console</artifactId><version>2.3.0-SNAPSHOT</version></dependency><dependency><groupId>com.bstek.ureport</groupId><artifactId>ureport2-core</artifactId><version>2.3.0-SNAPSHOT</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.7</version></dependency>2、在springBoot⼯程的pom⽂件添加repositories;<repositories><repository><id>snapshots</id><url>https:///content/repositories/snapshots/</url></repository><repository><id>sonatype</id><url>https:///content/groups/public/</url></repository></repositories>3、基于当前⼯程,创建webapp/WEB-INF⽬录,⼯程【main】⽬录右键【Directory】》输⼊【webapp】,基于webapp,继续新建directory》【WEB-INF】;4.3 创建web.xml⽂件并配置1、基于已新建【webapp】》【WEB-INF】⽬录,添加web.xml⽂件,点击【file】》【Project Structure】》【Facets】》【web】,新增web.xml⽂件及web resources directory;说明:E:\company\idea\IdeaProjects\springboot-demo-master\src\main:为当前我⼯程的路径E:\company\idea\IdeaProjects\springboot-demo-master\src\main\webapp\WEB-INF\web.xml(第5步)E:\company\idea\IdeaProjects\springboot-demo-master\src\main\webapp (第7步)2、基于步骤6新增的web.xml⽂件,添加listener及context-param、servlet、servlet-mapping;<listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:ureport-console-context.xml</param-value></context-param><servlet><servlet-name>ureportServlet</servlet-name><servlet-class>com.bstek.ureport.console.UReportServlet</servlet-class></servlet><servlet-mapping><servlet-name>ureportServlet</servlet-name><url-pattern>/ureport/*</url-pattern></servlet-mapping>4.4 创建UreportConfig ⽂件1、基于⼯程启动⽂件的⽗节点,创建⼦⽂件夹ureport》config,并创建UreportConfig ⽂件;package com.song.configuration.ureport.config;import org.springframework.boot.autoconfigure.EnableAutoConfiguration;import org.springframework.boot.web.servlet.ServletRegistrationBean;import org.springframework.context.annotation.Bean;import ponentScan;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.ImportResource;import com.bstek.ureport.console.UReportServlet;/*** Ureport2 配置类* @author qiaolin* @version 2018年5⽉9⽇*/@ImportResource("classpath:ureport-console-context.xml")@EnableAutoConfiguration@Configuration@ComponentScan(basePackages = "com.song.configuration")public class UreportConfig {@Beanpublic ServletRegistrationBean buildUreportServlet(){return new ServletRegistrationBean(new UReportServlet(), "/ureport/*");}}2、在配置途中,当缺少包时,需要根据提⽰⾃⾏添加、下载依赖,配置完成,点击resources⽬录,修改application.properties⽂件中关于mysql的配置,换成可⽤库(因为当前springboot⼯程是以⼀张user表为例的,所以当前连接的数据库中需要包含user表,囊括id、name、password字段),⼯程启动的端⼝号,默认是8080,此处已修改为18090;#serverserver.port=18090server.tomcat.uri-encoding=utf-8#MySQL(当前仅为⽰例)spring.datasource.driver-class-name=com.mysql.jdbc.Driverspring.datasource.url=jdbc:mysql://localhost:3306/jeesite?characterEncoding=utf8ername=rootspring.datasource.password=1234564.5 启动⼯程1、当上述均配置完成,进⼊到启动⽂件Entry,右键点击【Run Entry】启动⼯程;4.6 访问⼯程⼯程成功启动,访问地址为:五、报表基础配置5.1 ⼯具栏1)顶栏:针对报表:报表预览、保存报表、打开报表、导⼊excel、报表配置、查询表单设计器;针对单元格:重做(下⼀步)、撤销(上⼀步)、合并/拆分单元格、上下对齐、表格有⽆边框、斜线表头;针对数据:字体样式、字体⼤⼩、是否加粗、斜体、下划线、背景⾊、字体颜⾊、图⽚、⼆维码、图表图⽚:选择左侧单元格,在右侧对应属性区域,输⼊图⽚路径,默认⽀持以classpath:开头位于classpath下的图⽚⽂件,或以/开头位于WEB应⽤根⽬录下或某⽬录下的图⽚⽂件;⽐如"/WEB-INF/static/images/test.jpg"2)左栏:单元格栏,可针对指定单元格进⾏单元格样式及数据的设置,⿏标右键可设置单元格;标题⾏:在报表计算后分页时只会出现在第⼀页第⼀⾏的⾏,如果定义了多个⾏为标题⾏类型,那么这些⾏将在报表运⾏后分页输出时第⼀页最前⾯插⼊标题⾏。
怎么用JFreeReport做报表实践怎么用JFreeReport做报表实践准备工作:下载jfreeReport0.8.7 地址:/jfreereport/index.phpJava认证:用JFreeReport做报表实践,使用JFreeReport生成报表通常需要以下三个基本步骤:A.生成可通过TableModel接口访问的数据,如本例中的createData方法完成的功能。
B.生成一个JFreeReport实例,他定义了我们如何格式化显示数据,如本例中的'createReportDefinition方法完成的功能。
C.将数据和JFreeReport实例连接起来,并且将该JFreeReport 实例传给PreviewDialog的一个实例显示给用户。
下面开始:1.新建一个WEB工程,在WebRoot\lib中import 如下jar文件:jcommon-1.0.1.jar jfreereport-0.8.7.jar jfreereport-demo-0.8.7.jar jfreereport-servlet-demo-0.8.7.jar(可在jfreereport包中解压得到)2.写一个Demo.java 加入到工程的src包中。
内容如下:import java.awt.Color;import java.awt.geom.Point2D;import javax.swing.table.DefaultTableModel;import javax.swing.table.TableModel;import org.jfree.report.ElementAlignment;import org.jfree.report.JFreeReport;import org.jfree.report.JFreeReportBoot;import org.jfree.report.ReportProcessingException;import org.jfree.report.demo.helper.DefaultCloseHandler;import org.jfree.report.demo.helper.DemoHandler;import org.jfree.report.demo.helper.PreviewHandler;importorg.jfree.report.elementfactory.TextFieldElementFactory;import org.jfree.report.modules.gui.base.PreviewDialog;import org.jfree.ui.FloatDimension;import org.jfree.util.Log;public class Demo implements DemoHandler{private class HelloWorldPreviewHandler implements PreviewHandler{public HelloWorldPreviewHandler(){}public void attemptPreview(){executeReport();}}public Demo (){}protected void executeReport (){final TableModel data = createData();final JFreeReport report = createReportDefinition();report.setData(data);try{final PreviewDialog preview = new PreviewDialog(report);preview.addWindowListener(new DefaultCloseHandler());preview.pack();preview.setVisible(true);}catch (ReportProcessingException e){Log.error(“Failed to generate report ”, e);}}private TableModel createData (){final Object[] columnNames = new String[]{“Column1”,“Column2”};final DefaultT ableModel result = new DefaultTableModel(columnNames, 101);for (int i=1;i《101;i++){result.setValueAt(“用繁體字寫幾個看看\n”, i, 0);result.setValueAt(“简体中文输出第”+i+“次”, i, 1);}return result;}private JFreeReport createReportDefinition (){final JFreeReport report = new JFreeReport();report.setName(getDescription());TextFieldElementFactory factory = new TextFieldElementFactory();factory.setName(“T1”);factory.setAbsolutePosition(new Point2D.Float(0, 0));factory.setMinimumSize(new FloatDimension(150, 12));factory.setColor(Color.black);factory.setHorizontalAlignment(ElementAlignment.RIGHT); factory.setVerticalAlignment(ElementAlignment.MIDDLE); factory.setNullString(“-”);factory.setFieldname(“Column1”);report.getItemBand()。
基于Java的报表分析系统设计基于Java的报表分析系统设计是指使用Java编程语言来开发一个能够处理和分析报表数据的软件系统。
下面我将按照段落来解答你的问题。
1. 系统架构设计:在设计基于Java的报表分析系统时,需要考虑系统的架构。
常见的架构模式包括MVC(Model-View-Controller)和三层架构。
我们可以选择其中一种或根据具体需求进行定制化的架构设计。
2. 数据存储与管理:报表分析系统需要能够存储和管理大量的报表数据。
我们可以使用关系型数据库(如MySQL)或者NoSQL数据库(如MongoDB)来存储数据。
同时,我们需要设计合理的数据库表结构,以支持报表数据的快速查询和分析。
3. 数据提取和清洗:在报表分析系统中,数据的提取和清洗是非常重要的环节。
我们可以使用ETL (Extract-Transform-Load)工具来从不同数据源中提取数据,并进行必要的数据清洗和转换操作,以确保数据的质量和一致性。
4. 报表生成和展示:报表生成和展示是报表分析系统的核心功能之一。
我们可以使用Java开发库(如JasperReports、POI)来生成各种类型的报表,包括表格、图表、图形等。
同时,我们需要设计用户友好的报表展示界面,以便用户能够直观地查看和分析报表数据。
5. 数据分析和计算:报表分析系统需要能够对报表数据进行各种分析和计算操作。
我们可以使用Java编程语言来实现不同的数据分析算法和计算模型,以支持用户对报表数据的深入分析和挖掘。
同时,我们需要设计相应的数据处理和计算逻辑,以确保分析结果的准确性和可靠性。
6. 用户权限和安全性:报表分析系统通常需要实现用户权限管理和数据安全保护功能。
我们可以使用Java的安全框架(如Spring Security)来实现用户认证和授权,以确保只有经过授权的用户才能访问和操作报表数据。
同时,我们需要设计合理的数据加密和访问控制策略,以保护报表数据的安全性。
一、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同时并行处理线程的最大数受限制。
限制是为了避免系统资源占用过大,使系统反应迟钝。
该版本适合中小型的应用系统,保障应用系统正常运行。
服务器版在最大连接数没有受限,它能充分发挥服务器的个部分硬件设备的作用;相对要求服务器的设备配置高,保障最优性能效率。
该版本适合大中型的应用系统使用。
企业版提供垃圾回收机制管理,自动处理在内存中无用对象的引用;支持多服务器处理模式,提供在多个服务器的集群功能和服务器之间负载均衡功能。
提高服务器群的负载能力和和快速响应能力。
该版本适合负载繁重的应用系统使用。
二、安装JavaReport找到JavaReport-V3-Enterprise-Released.jar这个Jar文件,把这个文件的路径加入到classpath系统变量中,或拷贝到当前Web应用的WEB-INF\lib目录下,或拷贝到Tomcat5的安装目录的common\lib目录中;第一种方法和第三种方法对所有Web应用有效,而第二种方法仅对当前Web应用有效。
好了,至此,JavaReport就算安装完毕了。
接下来,继续介绍JavaReport。
三、相关类介绍下面给出Web报表显示时的情况,如图17-11所示。
在这个图中,对报表的显示情况一目了然,再介绍常用的类理解起来就会比较清晰了。
Java Report的组件包中有许多的类,体系庞大而复杂,在这里无法一一介绍,仅列出一些常用的类来作出说明,有兴趣的可参考详细的API手册。
(1)Web ReportEngine类即com.javareport.http.WebReportEngine,这个类是整个JavaReport中的Web引擎的开发接口。
所有的JSP或Servlet从这个类继承下来,覆盖createReport()函数就实现基本的报表开发工作。
WebReportEngine是JavaReport的Servlet或JSP的开发接口,是JSP或Servlet 的父类,报表系统在应用中的程序从此处继承下来,可以根据需要调整接口内容。
部分函数可以适当删除。
在开发中一般是实现createReport()函数就可以,形成实时动态报表就是在这个函数里实现的。
剩下的工作(怎样在Web上显示,怎样形成Work,PDF文件,等)交给报表引擎自动实现。
如果是在JSP中,在页头部分应加入如下语句:<%@ page extends="com.javareport.http.WebReportEngine"%>如果是Servlet,相应的Servlet类声明时语句如下:public class Servlet类名称extends WebReportEngine{……}createReport()方法原型如下:public Report createReport(javax.servlet.http.HttpServletRequest request)throws ng.Exception此方法用于建立报表,并返回报表的实例。
这个报表实例可以在Web上显示,同时也可以导出Word, Excel, PDF, CSV, HTML等格式的文档以供使用。
参数request可用于获取所有的动态请求的数据。
validate()此方法用于对上一个页面Form提交的参数进行检查,由于实时报表需要动态的参数,在这里进行数据校验。
方法原型如下:public ng.String validate(javax.servlet.http.HttpServletRequest request) 其中,参数request可用于获取所有的动态请求的数据;方法的返回值为null时代表通过,其他内容则为参数错误的提示信息。
getStartScript()方法用于构造报表内容在Web页面上显示之前执行的JavaScript或VBScript脚本,如果要定制则要重载这个方法。
方法原型如下:public ng.StringgetStartScript(javax.servlet.http.HttpServletRequest request)其中,参数request可用于获取所有的动态请求的数据;方法返回值为null时代表没有脚本内容。
getEndScript()方法用于构造报表内容在Web页面上显示之后执行的JavaScript或VBScript脚本,如果要定制则要重载这个方法。
方法原型如下:public ng.StringgetEndScript(javax.servlet.http.HttpServletRequest request)其中,参数request可用于获取所有的动态请求的数据;方法返回值为null时代表没有脚本内容。
getToolbarScript()方法用于定制Web报表在页面首部显示的工具栏为标准的样式(上下翻页,导出文件),可以在此扩展工具栏的内容,如:添加公司主页的链接,返回上一层链接的“返回”按钮,如果要定制则要重载这个方法。
方法原型如下:public ng.StringgetToolbarScript(javax.servlet.http.HttpServletRequest request)其中,参数request可用于获取所有的动态请求的数据;方法返回值为null时代表不添加内容。
isShowToolbar()如果不想在页面上显示报表工具栏,可重载这个方法,并设定返回值为false。
需要注意的是,如果是多页报表,上下翻页按钮就无法使用。
方法原型如下:public boolean isShowToolbar()方法的返回值是是否显示工具栏的布尔值标志。
getAllEchoButton()方法用于自定义显示在Web页面中的报表导出文件的按钮,比如应用中只导出PDF 文件,其他的不需要,就可以这里设定。
按钮值从Word按钮开始是(1,2,4,8,...),需要显示的按钮则将它们的值相加就可以了。
默认情况下工具栏上的按钮如图17-12所示:图17-12 默认情况下工具栏上的按钮方法原型如下:public int getAllEchoButton()方法的返回值是显示按钮对应的和值。
要作自定义,需要重载这个方法,并将返回值设为要显示的按钮对应的和值。
(2)Report类即com.javareport.beans.Report,报表类。
这个类的对象用于代表一张报表,是所有报表元素的容器,这是整个系统的核心,也是在浏览器上显示和生成电子文档(Word,Excel,PDF,Html等)的基础。
addHeaderSeparator()方法用于在报表的页眉添加一条横直线。
方法原型如下:public ng.String addHeaderSeparator(int num)其中,参数num表示横直线的粗细程度,以自然数表示,数字越大表示线越粗。
addHeaderSpace()此方法用于在页眉中添加若干个空格。
方法原型如下:public ng.String addHeaderSpace(int num)其中,参数num是要添加的空格的个数。
addHeaderTab()方法用于在页眉中添加若干个【Tab】键,【Tab】键跟空格键一样是不可见的,默认每个【Tab】为8个空格。
方法原型如下:public ng.String addHeaderTab(int num)其中,参数num是要添加的【Tab】键的个数。
addHeaderBreak()在页眉中添加一个换行符号,紧跟后面的内容则从下行第一个字符的位置开始。
方法原型如下:public ng.String addHeaderBreak()addHeaderText()在页眉中添加文本信息内容,紧跟后面的内容则从下行第一个字符的位置开始。
方法原型如下:public ng.String addHeaderText(ng.String text)其中,参数text是要添加的文本信息内容。
其中,{P}代表当前页,{N}代表总页数,如:“第{P}页,共{N}页”。
addChart()在报表中添加图表信息内容。
方法原型如下:public ng.String addChart(ChartImpl chart)其中,参数chart是要添加的图表,图表类ChartImpl是Java Report的核心模块,各种各样统计图由图表类生成。