谁用过ireport+jasperreport做报表 谁用过ireport+jasperreport做报表,我不知道如何下手 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://download.csdn.net/source/245590 报表编译fileName xml文件位置JasperCompileManager.compileReportToFile(fileName);产生文件classic.jasper填充数据fileName xml文件位置parameters hashMap 设置参数(报表中查询语句的参数值)Connect 数据连接JasperFillManager.fillReportToFile(fileName, parameters,Connect);导出数据JasperExportManager.exportReportToHtmlFile(fileName);使用的jarjasperreport-0.5.0.jar;commons-digester.jar;commons-logging.jar;commons-collections.jar;commons-beanutils.jar;示例程序import dori.jasper.engine.*;import dori.jasper.engine.data.*;import dori.jasper.engine.export.*;import dori.jasper.engine.util.*;import dori.jasper.view.*;import java.sql.*;import java.util.*;import java.io.*;public class QueryReport{private static final String TASK_COMPILE = "compile";private static final String TASK_FILL = "fill";private static final String TASK_PRINT = "print";private static final String TASK_PDF = "pdf";private static final String TASK_XML = "xml";private static final String TASK_XML_EMBED = "xmlEmbed";private static final String TASK_HTML = "html";private static final String TASK_XLS = "xls";private static final String TASK_CSV = "csv";private static final String TASK_RUN = "run";/****/public static void main(String[] args){String fileName = null;String taskName = null;if(args.length == 0){usage();return;}int k = 0;while ( args.length > k ){if ( args[k].startsWith("-T") )taskName = args[k].substring(2);if ( args[k].startsWith("-F") )fileName = args[k].substring(2);k++;}try{long start = System.currentTimeMillis();if (TASK_COMPILE.equals(taskName)){JasperCompileManager.compileReportToFile(fileName);System.err.println("Compile time : " + (System.currentTimeMillis() - start));System.exit(0);}else if (TASK_FILL.equals(taskName)){//Preparing parametersMap parameters = new HashMap();parameters.put("ReportTitle", "Address Report");parameters.put("FilterClause", "'Boston', 'Chicago', 'Oslo'");parameters.put("OrderClause", "City");JasperFillManager.fillReportToFile(fileName, parameters, getConnection());System.err.println("Filling time : " + (System.currentTimeMillis() - start));System.exit(0);}else if (TASK_PRINT.equals(taskName)){JasperPrintManager.printReport(fileName, true);System.err.println("Printing time : " + (System.currentTimeMillis() - start));System.exit(0);}else if (TASK_PDF.equals(taskName)){JasperExportManager.exportReportToPdfFile(fileName);System.err.println("PDF creation time : " + (System.currentTimeMillis() - start));System.exit(0);}else if (TASK_XML.equals(taskName)){JasperExportManager.exportReportToXmlFile(fileName, false);System.err.println("XML creation time : " + (System.currentTimeMillis() - start));System.exit(0);}else if (TASK_XML_EMBED.equals(taskName)){JasperExportManager.exportReportToXmlFile(fileName, true);System.err.println("XML creation time : " + (System.currentTimeMillis() - start));System.exit(0);}else if (TASK_HTML.equals(taskName)){JasperExportManager.exportReportToHtmlFile(fileName);System.err.println("HTML creation time : " + (System.currentTimeMillis() - start));System.exit(0);}else if (TASK_XLS.equals(taskName)){File sourceFile = new File(fileName);JasperPrint jasperPrint = (JasperPrint)JRLoader.loadObject(sourceFile);File destFile = new File(sourceFile.getParent(), jasperPrint.getName() + ".xls");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();System.err.println("XLS creation time : " + (System.currentTimeMillis() - start));System.exit(0);}else if (TASK_CSV.equals(taskName)){File sourceFile = new File(fileName);JasperPrint jasperPrint = (JasperPrint)JRLoader.loadObject(sourceFile);File destFile = new File(sourceFile.getParent(), jasperPrint.getName() + ".csv");JRCsvExporter exporter = new JRCsvExporter();exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, destFile.toString());exporter.exportReport();System.err.println("CSV creation time : " + (System.currentTimeMillis() - start));System.exit(0);}else if (TASK_RUN.equals(taskName)){//Preparing parametersMap parameters = new HashMap();parameters.put("ReportTitle", "Address Report");parameters.put("FilterClause", "'Boston', 'Chicago'");parameters.put("OrderClause", "City,");JasperRunManager.runReportToPdfFile(fileName, parameters, getConnection());System.err.println("PDF running time : " + (System.currentTimeMillis() - start));System.exit(0);}else{usage();System.exit(0);}}catch (JRException e){e.printStackTrace();System.exit(1);}catch (Exception e){e.printStackTrace();System.exit(1);}}private static void usage(){System.out.println( "QueryApp usage:" );System.out.println( "\tjava QueryApp -Ttask -Ffile" );System.out.println( "\tTasks : compile | fill1 | fill2 | fill3 | fill4 | print | pdf | xml | xmlEmbed | html | xls | csv | run" );}private static Connection getConnection() throws ClassNotFoundException, SQLException{//Change these settings according to your local configurationString driver = "org.gjt.mm.mysql.Driver";String connectString = "jdbc:mysql://sstfriend/esmart?useUnicode=true&characterEncoding=GBK";String user = "esmart";String password = "esmart";Class.forName(driver);Connection conn = DriverManager.getConnection(connectString, user, password);return conn;}} JasperReports快速使用流程1. 主要类运行JasperReports 时使用的主要类dori.jasper.engine.JasperCompileManagerdori.jasper.engine.JasperFillManagerdori.jasper.engine.JasperPrintManagerdori.jasper.engine.JasperExportManager这些类表现JasperReports引擎的正面(façade), 他们有各种静态方法简化API功能的访问并用来编译一个XML报表设计、填充报表、打印它或输出到PDF, HTML和 XML文件。dori.jasper.view.JasperViewer这个可用来观察产生的报表。dori.jasper.view.JasperDesignViewer这个可用来观察报表设计。2. 编译报表设计报表设计由一个具有在jasperreport.dtd 文件中定义的结构的XML文件来表现。为了根据这样的报表设计来产生报表,需要编译它。编译可通过使用由dori.jasper.engine.JasperCompileManager 类暴露的compileReportXXX()方法来完成。当编译一个报表设计时,引擎会创建一个包括所有报表表示式的Java类文件,这个类是使用Java编译器编译并在结果.jasper文件中存储字节码。默认情况下,JasperReports使用目前JVM类路径来编译报表文件(java.class.path系统属性)并以目前工作目录作为产生文件的临时存放位置。为了定制报表编译过程,JasperReports充许通过提供一个值给系统属性jasper.reports.compile.class.path来覆盖默认行为,这将被用报表类编译的类路径,赋一个值给系统属性jasper.reports.compile.temp,这个将被用作临时目录XML验证默认是打开的,可通过设定系统属性jasper.reports.compilation.xml.validation 为false来关闭。如果你想使用一个不同的Java编译器,如jikes,你可以使用jasper.reports.compiler系统属性来提供编译器程序的名字。在你使用jikes情况下,请确信你将rt.jar文件加入到类路径中,可通过上面提及的系统属性 jasper.reports.compile.class.path。You can see some of those in action in the supplied "webapp" samples. Check the jsp/compile.jsp and WEB-INF/classes/servlets/CompileServlet.java files.3. 观察报表设计报表设计可通过使用dori.jasper.view.JasperDesignViewer应用程序来察看。在其main()方法中,它接收那些包括报表设计的文件的名字来观看。这可以是XML文件或编译过的报表设计。4. 填充报表一个编译过的报表设计可通过调用dori.jasper.engine.JasperFillManager 类的fillReportXXX()方法来产生报表。5. 观看报表产生的报表可通使用dori.jasper.view.JasperViewer应用来观看。在其main()方法中它接受包括报表的文件的名字来观看。6. 打印报表产生的报表可使用doriJasper.engine.JasperPrintManager 类暴露的静态方法printReport(), printPage()或printPages()来打印。7.导出到PDF, HTML 或XML格式在已经填充一个报表后,我们也可以通过使用dori.jasper.engine.JasperExportManager类的exportReportXXX()方法来以 PDF, HTML或XML格式导出它。三.技术指南简述1.报表设计一个报表设计描述一个被JasperReports引擎用来分发动态内容到打印机,到屏幕或到WEB的模板。存储在数据库中的数据根据报表设计被组织达到准备到打印,页面导向文档。报表设计是在XML文件中定义并且必有一个特别的结构。此结构是在一个由JasperReports 引擎一起提供的DTD文件中声明的(XML类型定义文件jasperreport.dtd)。然后编译XML文件,为了在后面的报表填充操作中使用他们。为了创建一个简单的报表设计,我们不得不编辑一个有以下结构的XML文件:<?xml version="1.0"?><!DOCTYPE jasperReport PUBLIC "-//JasperReports//DTD Report Design//EN""http://jasperreports.sourceforge.net/dtds/jasperreport.dtd"><jasperReport name="name_of_the_report" ... >...</jasperReport>2.参数参数是传入到报表填充操作的对象引用参数可的构造SQL查询3.数据源JasperReports使用一个叫JRDataSource的接口来支持各种类型的数据源4.字段报表字段代表从数据源映射数据到报表产生程序的唯一途径5.表达式表达式是JasperReports的强大特点,它们可被声明的报表变量使用来执行各种计算。6.变量报表变量是才一个表达式开始时建立的特殊的对象。变量可以在相应的表达式中执行内置类型的计算,如:count,sum,average,lowest,highest等7.报表区当我们建立一个报表设计时,我们需要定义报表区的内容和布局。报表设计的整个结构基于以下报表区<title>, <pageHeader>, <columnHeader>, <groupHeader>, <detail>, <groupFooter>, <columnFoter>, <pageFooter>, <summary>.8.组组代表了在报表上组织数据的一个灵活的方式,当我们填充一个报表时,JasperReports引擎可字段检测组表达式<groupFooter> 和 <groupHeader>等是否完整。9.字体和Unicode支持你可以用任何语言来创建你的报表。10. ScriptletsScriptlets是java代码序列,在每次报表事件发生时被执行。通过 scriptlets,用户可以影响被报表变量存储的值。当我们创建一个JasperReports scriptlet类时,开发者要实现或重载几个方法,象:beforeReportInit(), afterReportInit(), beforePageInit(), afterPageInit(), beforeGroupInit(), afterGroupInit()等,这些方法当填充报表时在适当的时候被报表引擎调用。 List初始化 问一个关于,引用变量,简单变量…理论问题,跪求 100求助!Myeclipse里面的 部署 按钮不能用了!!! java提取excel数据以word形式打印??(有哪位高手进来解答一下) 急 关于static变量和实例变量的问题,求解! : 求解java2的家族关系? Jbuilder中可以使用pilot 配置mysql吗? 优秀的java集成开发环境 java程序分别在TE,IE中浏览看浏览器的安全性 预编译如何输入一个指定日期呢?高手救急~~~ servlet是不是线程安全的问题
报表编译
fileName xml文件位置
JasperCompileManager.compileReportToFile(fileName);
产生文件classic.jasper填充数据
fileName xml文件位置
parameters hashMap 设置参数(报表中查询语句的参数值)
Connect 数据连接
JasperFillManager.fillReportToFile(fileName, parameters,Connect);导出数据
JasperExportManager.exportReportToHtmlFile(fileName);使用的jar
jasperreport-0.5.0.jar;
commons-digester.jar;
commons-logging.jar;
commons-collections.jar;
commons-beanutils.jar;示例程序
import dori.jasper.engine.*;
import dori.jasper.engine.data.*;
import dori.jasper.engine.export.*;
import dori.jasper.engine.util.*;
import dori.jasper.view.*;
import java.sql.*;
import java.util.*;
import java.io.*;public class QueryReport
{private static final String TASK_COMPILE = "compile";
private static final String TASK_FILL = "fill";
private static final String TASK_PRINT = "print";
private static final String TASK_PDF = "pdf";
private static final String TASK_XML = "xml";
private static final String TASK_XML_EMBED = "xmlEmbed";
private static final String TASK_HTML = "html";
private static final String TASK_XLS = "xls";
private static final String TASK_CSV = "csv";
private static final String TASK_RUN = "run";/**
*
*/
public static void main(String[] args)
{
String fileName = null;
String taskName = null;if(args.length == 0)
{
usage();
return;
}int k = 0;while ( args.length > k )
{
if ( args[k].startsWith("-T") )
taskName = args[k].substring(2);
if ( args[k].startsWith("-F") )
fileName = args[k].substring(2);k++;
}try
{
long start = System.currentTimeMillis();
if (TASK_COMPILE.equals(taskName))
{
JasperCompileManager.compileReportToFile(fileName);
System.err.println("Compile time : " + (System.currentTimeMillis() - start));
System.exit(0);
}
else if (TASK_FILL.equals(taskName))
{
//Preparing parameters
Map parameters = new HashMap();
parameters.put("ReportTitle", "Address Report");
parameters.put("FilterClause", "'Boston', 'Chicago', 'Oslo'");
parameters.put("OrderClause", "City");JasperFillManager.fillReportToFile(fileName, parameters, getConnection());
System.err.println("Filling time : " + (System.currentTimeMillis() - start));
System.exit(0);
}
else if (TASK_PRINT.equals(taskName))
{
JasperPrintManager.printReport(fileName, true);
System.err.println("Printing time : " + (System.currentTimeMillis() - start));
System.exit(0);
}
else if (TASK_PDF.equals(taskName))
{
JasperExportManager.exportReportToPdfFile(fileName);
System.err.println("PDF creation time : " + (System.currentTimeMillis() - start));
System.exit(0);
}
else if (TASK_XML.equals(taskName))
{
JasperExportManager.exportReportToXmlFile(fileName, false);
System.err.println("XML creation time : " + (System.currentTimeMillis() - start));
System.exit(0);
}
else if (TASK_XML_EMBED.equals(taskName))
{
JasperExportManager.exportReportToXmlFile(fileName, true);
System.err.println("XML creation time : " + (System.currentTimeMillis() - start));
System.exit(0);
}
else if (TASK_HTML.equals(taskName))
{
JasperExportManager.exportReportToHtmlFile(fileName);
System.err.println("HTML creation time : " + (System.currentTimeMillis() - start));
System.exit(0);
}
else if (TASK_XLS.equals(taskName))
{
File sourceFile = new File(fileName);JasperPrint jasperPrint = (JasperPrint)JRLoader.loadObject(sourceFile);File destFile = new File(sourceFile.getParent(), jasperPrint.getName() + ".xls");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();System.err.println("XLS creation time : " + (System.currentTimeMillis() - start));
System.exit(0);
}
else if (TASK_CSV.equals(taskName))
{
File sourceFile = new File(fileName);JasperPrint jasperPrint = (JasperPrint)JRLoader.loadObject(sourceFile);File destFile = new File(sourceFile.getParent(), jasperPrint.getName() + ".csv");JRCsvExporter exporter = new JRCsvExporter();exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, destFile.toString());exporter.exportReport();System.err.println("CSV creation time : " + (System.currentTimeMillis() - start));
System.exit(0);
}
else if (TASK_RUN.equals(taskName))
{
//Preparing parameters
Map parameters = new HashMap();
parameters.put("ReportTitle", "Address Report");
parameters.put("FilterClause", "'Boston', 'Chicago'");
parameters.put("OrderClause", "City,");JasperRunManager.runReportToPdfFile(fileName, parameters, getConnection());
System.err.println("PDF running time : " + (System.currentTimeMillis() - start));
System.exit(0);
}
else
{
usage();
System.exit(0);
}
}
catch (JRException e)
{
e.printStackTrace();
System.exit(1);
}
catch (Exception e)
{
e.printStackTrace();
System.exit(1);
}
}private static void usage()
{
System.out.println( "QueryApp usage:" );
System.out.println( "\tjava QueryApp -Ttask -Ffile" );
System.out.println( "\tTasks : compile | fill1 | fill2 | fill3 | fill4 | print | pdf | xml | xmlEmbed | html | xls | csv | run" );
}private static Connection getConnection() throws ClassNotFoundException, SQLException
{
//Change these settings according to your local configuration
String driver = "org.gjt.mm.mysql.Driver";
String connectString = "jdbc:mysql://sstfriend/esmart?useUnicode=true&characterEncoding=GBK";
String user = "esmart";
String password = "esmart";Class.forName(driver);
Connection conn = DriverManager.getConnection(connectString, user, password);
return conn;
}
}
1. 主要类
运行JasperReports 时使用的主要类
dori.jasper.engine.JasperCompileManager
dori.jasper.engine.JasperFillManager
dori.jasper.engine.JasperPrintManager
dori.jasper.engine.JasperExportManager
这些类表现JasperReports引擎的正面(façade), 他们有各种静态方法简化API功能的访问并用来编译一个XML报表设计、填充报表、打印它或输出到PDF, HTML和 XML文件。
dori.jasper.view.JasperViewer
这个可用来观察产生的报表。
dori.jasper.view.JasperDesignViewer
这个可用来观察报表设计。
2. 编译报表设计
报表设计由一个具有在jasperreport.dtd 文件中定义的结构的XML文件来表现。为了根据这样的报表设计来产生报表,需要编译它。
编译可通过使用由dori.jasper.engine.JasperCompileManager 类暴露的compileReportXXX()方法来完成。
当编译一个报表设计时,引擎会创建一个包括所有报表表示式的Java类文件,这个类是使用Java编译器编译并在结果.jasper文件中存储字节码。
默认情况下,JasperReports使用目前JVM类路径来编译报表文件(java.class.path系统属性)并以目前工作目录作为产生文件的临时存放位置。
为了定制报表编译过程,JasperReports充许通过提供一个值给系统属性jasper.reports.compile.class.path来覆盖默认行为,这将被用报表类编译的类路径,赋一个值给系统属性jasper.reports.compile.temp,这个将被用作临时目录
XML验证默认是打开的,可通过设定系统属性jasper.reports.compilation.xml.validation 为false来关闭。
如果你想使用一个不同的Java编译器,如jikes,你可以使用jasper.reports.compiler系统属性来提供编译器程序的名字。在你使用jikes情况下,请确信你将rt.jar文件加入到类路径中,可通过上面提及的系统属性 jasper.reports.compile.class.path。
You can see some of those in action in the supplied "webapp" samples. Check the jsp/compile.jsp and WEB-INF/classes/servlets/CompileServlet.java files.3. 观察报表设计
报表设计可通过使用dori.jasper.view.JasperDesignViewer应用程序来察看。在其main()方法中,它接收那些包括报表设计的文件的名字来观看。这可以是XML文件或编译过的报表设计。
4. 填充报表
一个编译过的报表设计可通过调用dori.jasper.engine.JasperFillManager 类的fillReportXXX()方法来产生报表。
5. 观看报表
产生的报表可通使用dori.jasper.view.JasperViewer应用来观看。在其main()方法中它接受包括报表的文件的名字来观看。
6. 打印报表
产生的报表可使用doriJasper.engine.JasperPrintManager 类暴露的静态方法printReport(), printPage()或printPages()来打印。
7.导出到PDF, HTML 或XML格式
在已经填充一个报表后,我们也可以通过使用dori.jasper.engine.JasperExportManager类的exportReportXXX()方法来以 PDF, HTML或XML格式导出它。三.技术指南简述
1.报表设计
一个报表设计描述一个被JasperReports引擎用来分发动态内容到打印机,到屏幕或到WEB的模板。存储在数据库中的数据根据报表设计被组织达到准备到打印,页面导向文档。
报表设计是在XML文件中定义并且必有一个特别的结构。此结构是在一个由JasperReports 引擎一起提供的DTD文件中声明的(XML类型定义文件jasperreport.dtd)。然后编译XML文件,为了在后面的报表填充操作中使用他们。
为了创建一个简单的报表设计,我们不得不编辑一个有以下结构的XML文件:
<?xml version="1.0"?>
<!DOCTYPE jasperReport PUBLIC "-//JasperReports//DTD Report Design//EN"
"http://jasperreports.sourceforge.net/dtds/jasperreport.dtd">
<jasperReport name="name_of_the_report" ... >
...
</jasperReport>
2.参数
参数是传入到报表填充操作的对象引用
参数可的构造SQL查询
3.数据源
JasperReports使用一个叫JRDataSource的接口来支持各种类型的数据源
4.字段
报表字段代表从数据源映射数据到报表产生程序的唯一途径
5.表达式
表达式是JasperReports的强大特点,它们可被声明的报表变量使用来执行各种计算。
6.变量
报表变量是才一个表达式开始时建立的特殊的对象。
变量可以在相应的表达式中执行内置类型的计算,如:count,sum,average,lowest,highest等
7.报表区
当我们建立一个报表设计时,我们需要定义报表区的内容和布局。报表设计的整个结构基于以下报表区<title>, <pageHeader>, <columnHeader>, <groupHeader>, <detail>, <groupFooter>, <columnFoter>, <pageFooter>, <summary>.
8.组
组代表了在报表上组织数据的一个灵活的方式,当我们填充一个报表时,JasperReports引擎可字段检测组表达式<groupFooter> 和 <groupHeader>等是否完整。
9.字体和Unicode支持
你可以用任何语言来创建你的报表。
10. Scriptlets
Scriptlets是java代码序列,在每次报表事件发生时被执行。通过 scriptlets,用户可以影响被报表变量存储的值。
当我们创建一个JasperReports scriptlet类时,开发者要实现或重载几个方法,象:beforeReportInit(), afterReportInit(), beforePageInit(), afterPageInit(), beforeGroupInit(), afterGroupInit()等,这些方法当填充报表时在适当的时候被报表引擎调用。