jasperreports是Java语言中比较流行的报表解决方案,以下主要介绍如何运用此技术。
jasperreports的依赖包
image.png
barbecue-1.5-beta1.jar、barcoder4j-2.1.jar和batik-.jar:用于二维码和条形码的生成。
commons-.jar:常规依赖包
iText.jar:中文的依赖包
mysql-connerctor.jar和ojdbc6.jar:jdbc依赖
xml-apis-*.jar:读取jasperreports配置报表的xml读取工具包
jasperreports代码案例
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
/**
*@author:tp
*@create date:2017-10-17
*/
public class JasperReport {
public static Connection getMySqlConnection() {
try {
Class.forName("com.mysql.jdbc.Driver");
return DriverManager.getConnection("jdbc:mysql://10.2.8.15:3306/jasperreport", "root", "root");
} catch (SQLException e) {
throw new RuntimeException(e);
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
}
}
public static Connection getOracleConnection() {
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
return DriverManager.getConnection("jdbc:oracle:thin:@10.2.8.5:1521:orcl", "dispatch", "dispatch");
} catch (SQLException e) {
throw new RuntimeException(e);
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
}
}
public static void oracleExport() throws Exception {
InputStream inputStream = JasperReport.class.getResourceAsStream("../file/collect_new_print.jasper");
Map<String, Object> parameters = new HashMap<String, Object>();
parameters.put("fid", "TN20102050013");//标题参数
parameters.put("deptId", "1");//标题参数
parameters.put("operman", "测试人员");//标题参数
Connection connection = getOracleConnection();
JasperPrint jasperPrint = JasperFillManager.fillReport(inputStream, parameters, connection);
JasperExportManager.exportReportToPdfFile(jasperPrint, "collect_new_print.pdf");//在当前项目地址中生成pdf
}
public static void mySqlExport() throws Exception {
InputStream inputStream = JasperReport.class.getResourceAsStream("../file/report1.jasper");
Map<String, Object> parameters = new HashMap<String, Object>();
parameters.put("P_title", "管理员列表");//标题参数
Connection connection = getMySqlConnection();
JasperPrint jasperPrint = JasperFillManager.fillReport(inputStream, parameters, connection);
JasperExportManager.exportReportToPdfFile(jasperPrint, "report1.pdf");//在当前项目地址中生成pdf
}
public static void main(String[] args) throws Exception {
//mySqlExport();
oracleExport();
}
}
常见问题
问题:配置PDF模板时,中文无法显示
解决方案:需要定义单元格的格式为:pdfFontName="STSong-Light" pdfEncoding="UniGB-UCS2-H" isPdfEmbedded="true"
image.png
问题:ireport无法读取Oracle数据库
解决方案:需要在软件增加jdbc依赖,然后工具中classpath配置对应的路径
问题:ireport闪退问题
解决方案:需要配置软件的JDK路径,配置文件路径为:etc/ireport.conf
# default location of JDK/JRE, can be overridden by using --jdkhome <dir> switch
jdkhome=T:\\tool\\jdk\\jdk7\\jdk1.7.0_80