package test.report;
import java.math.BigDecimal;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRResultSetDataSource;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.util.JRLoader;
public class GenerateReport {
public static void main(String[] args) {
try {
sql4Report();
} catch (JRException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
System.out.print( "finish" );
}
}
public static void parameter4Report ()
throws SQLException, JRException {
//report parameter
HashMap<String, Object> parameter =
new HashMap<String, Object>();
parameter.put( "master_location_id", new BigDecimal(22) );
Connection con = getConnection();
JasperReport jasperReport =
JasperCompileManager.compileReport("reports/Location.jrxml");
JasperPrint jasperPrint =
JasperFillManager.fillReport( jasperReport, parameter, con );
JasperExportManager.exportReportToPdfFile(
jasperPrint, "reports/location_parameter4Report.pdf");
}
public static void sql4Report () throws SQLException, JRException {
//create the ResultSet
Connection con = getConnection();
PreparedStatement statement =
con.prepareStatement(
"select * from loc_location "
+ "where location_type_cd = 'ROOM' "
+ "order by location_type_cd"
);
ResultSet resultSet = statement.executeQuery();
JRResultSetDataSource result =
new JRResultSetDataSource( resultSet );
JasperReport jasperReport =
JasperCompileManager.compileReport("reports/Location.jrxml");
JasperPrint jasperPrint =
JasperFillManager.fillReport(
jasperReport, new HashMap(), result
);
JasperExportManager.exportReportToPdfFile(
jasperPrint, "reports/location_sql4Report.pdf"
);
}
public static void jasper4Report ()
throws SQLException, JRException {
//create the ResultSet
Connection con = getConnection();
PreparedStatement statement =
con.prepareStatement(
"select * from loc_location "
+ "where location_type_cd = 'ROOM' "
+ "order by location_type_cd"
);
ResultSet resultSet = statement.executeQuery();
JRResultSetDataSource result =
new JRResultSetDataSource( resultSet );
//modify
JasperReport jasperReport =
(JasperReport) JRLoader.loadObject(
"reports/Location.jasper"
);
JasperPrint jasperPrint =
JasperFillManager.fillReport(
jasperReport, new HashMap(), result
);
JasperExportManager.exportReportToPdfFile(
jasperPrint, "reports/location_jasper4Report.pdf"
);
}
public static void xls4Report () throws SQLException, JRException {
// create the ResultSet
Connection con = getConnection();
PreparedStatement statement =
con.prepareStatement(
"select * from loc_location "
+ "where location_type_cd = 'ROOM' "
+ "order by location_type_cd"
);
ResultSet resultSet = statement.executeQuery();
JRResultSetDataSource result =
new JRResultSetDataSource( resultSet );
// create JasperReport from .jasper
JasperReport jasperReport =
(JasperReport) JRLoader.loadObject("reports/Location.jasper");
JasperPrint jasperPrint =
JasperFillManager.fillReport( jasperReport, new HashMap(), result );
// JasperExportManager.exportReportToPdfFile( jasperPrint, "reports/location_xls4Report.xls");
JRXlsExporter xlsExporter = new JRXlsExporter();
xlsExporter.setParameter( JRExporterParameter.JASPER_PRINT, jasperPrint );
xlsExporter.setParameter( JRExporterParameter.OUTPUT_FILE, new File("reports/location_xls4Report.xls") );
xlsExporter.exportReport();
}
private static Connection getConnection () throws SQLException {
DriverManager.registerDriver(
new oracle.jdbc.driver.OracleDriver()
);
return DriverManager.getConnection( url, user, pw );
}
private static String url = "jdbc:oracle:thin:@localhost:1521:db";
private static String user = "report";
private static String pw = "report";
}
需要的包:
jasperreports-3.1.2.jar
jasperreports-3.1.2-applet.jar
jasperreports-3.1.2-javaflow.jar
commons-collections.jar
commons-digester.jar
commons-logging-1.0.4.jar
commons-logging-api.jar
commons-beanutils.jar
itext-1.3.1.jar
classes12.jar
poi-3.0.1.jar
poi-contrib-3.0.1-FINAL-20070705.jar
poi-scratchpad-3.0.1-FINAL-20070705.jar
文件结构:
+test
++report
+++GenerateReport.java
+reports
++Location.jrxml
++Location.jasper
数据表要和Location.jrmal或Location.jasper(即report的设计一致就行了)
另外可以参考一下这里:
http://blog.csdn.net/kabini/archive/2007/05/08/1600098.aspx