Jaspersoft iReport Designer使用
Jaspersoft iReport Designer使用
一、安装iReport
下载iReport
直接默认安装或自定义安装
二、连接数据库
导入JDBC包
点击工具→选项→Classpath,点击Add JAR导入mysql-connector-java-8.0.21.jar(可修改为任意的JDBC包),勾选Reloadable,点击确认保存退出。
配置数据库
Name 填写数据库名称,JDBC Driver 选择 MySQL(com.mysql.jdbc.Driver) ,JDBC URL 填写数据库URL,并填写用户名和密码,点击 Test 。
如果连接成功,则如下图所示:
数据库配置失败
解决consider upgrading MySQL client问题
使用命令提示符进入MySql安装目录下的 bin 文件夹
登录数据库
输入
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
然后按Enter键,其中root是用户名,localhost特指本地主机,mysql_native_password是旧的密码校验机制,123456是密码。
再输入
FLUSH PRIVILEGES;
然后按Enter键。
解决Unknown initial character set index '255' received from server. Initial client character问题
在JDBC URL 后面添加 useUnicode=true&characterEncoding=utf8
如:jdbc:mysql://localhost:3306/data?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8
三、生成报表
JAVA版本要求:JDK7
生成报表雏形
生成报表
点击窗口→组件面板,打开组件面板
选择Static Text来编辑报表头和报表属性,选择Text Field来作为数据框。如下图
可通过下图按键来对文件进行大小、字体、位置的调整
点击下图按键,进行数据库的连接
填写sql语句进行数据的获取
Text Field中填写$F{属性名}
点击Preview查看报表
至此报表初步完成
为报表添加时间
为报表添加如下组件
点击红框,打开编辑,填写下面JAVA代码
java.util.Calendar.getInstance().getTime()
点击Preview查看报表
可通过下图操作来修改时间样式
报表字体处理
所有含有中文的组件字体属性修改为:
宋体
STSong-Light
UniGB-UCS2-H (Chinese Simplified)
如下图
保存报表文件
获得report2.jrxml和report2.jasper文件
四、JAVA项目中使用报表
Eclipse在2019以后版本只支持JDK8以上,故需将JDK版权切换为JDK8
创建maven项目
菜单栏File→New→Maven Project,进行以下操作:
创建在src/main下source文件夹
在项目文件中添加报表模板
在项目下生成一个存放报表模板文件的文件夹,将生成的两个文件复制到文件夹中。
导入相关jar包
在pom.xml文件中添加下面内容
<dependencies>
<!-- jasperReports报表辅助包 -->
<dependency>
<groupId>org.olap4j</groupId>
<artifactId>olap4j-xmlaserver</artifactId>
<version>1.2.0</version>
</dependency>
<!-- jasperReports报表辅助包 -->
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports-fonts</artifactId>
<version>6.15.0</version>
</dependency>
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports-functions</artifactId>
<version>6.15.0</version>
</dependency>
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports</artifactId>
<version>6.3.0</version>
</dependency>
<!-- groovy利用可 -->
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-all</artifactId>
<version>2.4.5</version>
</dependency>
<!-- 基本数据关联 -->
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.9.0</version>
</dependency>
<dependency>
<groupId>commons-digester</groupId>
<artifactId>commons-digester</artifactId>
<version>2.1</version>
</dependency>
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>3.2.2</version>
</dependency>
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.9.4</version>
</dependency>
<!-- 文字关联 -->
<dependency>
<groupId>com.lowagie</groupId>
<artifactId>itext</artifactId>
<version>2.1.7</version>
</dependency>
<!-- excel关联 -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.10.1</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.10.1</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml-schemas</artifactId>
<version>3.10.1</version>
</dependency>
<!-- 图标关联 -->
<dependency>
<groupId>org.jfree</groupId>
<artifactId>jcommon</artifactId>
<version>1.0.23</version>
<exclusions>
<exclusion>
<groupId>gnujaxp</groupId>
<artifactId>gnujaxp</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.jfree</groupId>
<artifactId>jfreechart</artifactId>
<version>1.0.19</version>
<exclusions>
<exclusion>
<groupId>gnujaxp</groupId>
<artifactId>gnujaxp</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.26</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.jfree/jfreechart -->
<dependency>
<groupId>org.jfree</groupId>
<artifactId>jfreechart</artifactId>
<version>1.0.14</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.jfree/jcommon -->
<dependency>
<groupId>org.jfree</groupId>
<artifactId>jcommon</artifactId>
<version>1.0.17</version>
</dependency>
</dependencies>
导入字体jar包和JDBC的jar包
字体jar包和JDBC的jar包
链接: https://pan.baidu.com/s/1dDoQDqMZPy8iBDzwur7sQw 提取码: x5w4
添加log4j.properties文件
在项目resource文件夹中,新建log4j.properties文件,粘贴复制下面内容
# Global logging configuration \u5F00\u53D1\u65F6\u5019\u5EFA\u8BAE\u4F7F\u7528 debug
log4j.rootLogger=DEBUG, stdout
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
编写JAVA文件调用报表
import util.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
import dao.*;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
public class IReportTest {
public Connection getCon() throws ClassNotFoundException, SQLException {
String dbUrl = "jdbc:mysql://localhost:3306/data?serverTimezone=GMT%2B8";
String dbUserName = "root";
String dbPasswd = "123456";
String jdbcName = "com.mysql.cj.jdbc.Driver";
Class.forName(jdbcName);
Connection con = DriverManager.getConnection(dbUrl,dbUserName,dbPasswd);
return con;
}
public static void main(String[] args) throws JRException{
Connection con = null;
IReportTest iReportTest = new IReportTest();
try {
con = iReportTest.getCon();
Map<String,Object> rpt = new HashMap<String,Object>();
//将路径修改为项目中jasper文件的路径
JasperPrint jasperPrint = JasperFillManager.fillReport("F:/eclipse2019/workspace/data/reportmodle/report2.jasper", rpt,con);
//该路径为pdf文件输出路径
JasperExportManager.exportReportToPdfFile(jasperPrint, "F:/eclipse2019/workspace/data/report/report2.pdf");
}catch(Exception e) {
e.printStackTrace();
}
}
}
报表生成pdf文件如下图
如果生成的pdf文件没有中文,请检查报表字体的设置是否正确或文字jar包正确导入。