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.jrxmlreport2.jasper文件

四、JAVA项目中使用报表

Eclipse在2019以后版本只支持JDK8以上,故需将JDK版权切换为JDK8

创建maven项目

菜单栏FileNewMaven 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包正确导入。

posted @ 2020-11-05 21:39  2ch  阅读(2606)  评论(0)    收藏  举报