先看看设计的报表样式:
reportTitle是新添加的一个参数,而其他的id和name是通过数据源得到的Filed。IReport在设置参数的时候需要先在左边新建一个parameter,然后再把该parameter托到右边的设计栏中。
生成的XML文件为:
JasperReport在生成报表的时候可以直接操作jrxml文件,然后通过Java代码编译为.jasper文件,也可以直接操作IReport编译好的.jasper文件,下面就是用的直接操作.jasper文件,注释掉的是操作jrxml文件的。JasperReport可以把生成的报表导出为多种格式,下面导出的是普通的HTML。JasperReport在往模版里面设置参数值,是提供一个Map进行参数传入的。
java代码:
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
public class Test2 {
public static void main(String args[]) throws JRException, ClassNotFoundException, SQLException, FileNotFoundException {
String fileName = "E:\\reports\\report2.jrxml";//直接操作生成的jrxml文件
JasperReport jasperReport = null;
JasperPrint jasperPrint = null;
//jasperReport = JasperCompileManager.compileReport(fileName);//编译jrxml文件
InputStream inputStream = new FileInputStream("E:\\reports\\report2.jasper");
Map parameters = new HashMap();//传入参数
parameters.put("reportTitle", "我的第一个程序");
//jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, getConnection());
jasperPrint = JasperFillManager.fillReport(inputStream, parameters, getConnection());
JasperExportManager.exportReportToHtmlFile(jasperPrint, "first.html");
}
public static Connection getConnection() throws ClassNotFoundException, SQLException {
Connection conn = null;
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost/blog", "root", "root");
return conn;
}
}
导出的HTML预览界面: