折线图的效果如下:
需要的数据库表数据如下:
如何能够实现上面的折线图展示? 具体步骤如下:
利用TIBCO Jaspersoft Studio工具进行设计折线图的相关内容:效果图如下:
Demo01.jrxml 内容:
<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version 6.6.0.final using JasperReports Library version 6.6.0 -->
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="Demo01" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="1801ff61-41f7-4cc0-96ef-1bb9ff3a2eba">
<property name="com.jaspersoft.studio.data.sql.tables" value=""/>
<property name="com.jaspersoft.studio.data.defaultdataadapter" value="msql"/>
<queryString language="SQL">
<![CDATA[select * from t_account]]>
</queryString>
<field name="id" class="java.lang.Integer">
<property name="com.jaspersoft.studio.field.label" value="id"/>
<property name="com.jaspersoft.studio.field.tree.path" value="t_account"/>
</field>
<field name="balance" class="java.lang.Float">
<property name="com.jaspersoft.studio.field.label" value="balance"/>
<property name="com.jaspersoft.studio.field.tree.path" value="t_account"/>
</field>
<field name="username" class="java.lang.String">
<property name="com.jaspersoft.studio.field.label" value="username"/>
<property name="com.jaspersoft.studio.field.tree.path" value="t_account"/>
</field>
<background>
<band splitType="Stretch"/>
</background>
<detail>
<band height="333" splitType="Stretch">
<lineChart>
<chart evaluationTime="Report">
<reportElement x="151" y="123" width="200" height="200" uuid="3c11aa6d-1cfd-4016-b8e7-30926323e0bb"/>
<chartTitle/>
<chartSubtitle/>
<chartLegend/>
</chart>
<categoryDataset>
<categorySeries>
<seriesExpression><![CDATA["折线图"]]></seriesExpression>
<categoryExpression><![CDATA[$F{username}]]></categoryExpression>
<valueExpression><![CDATA[$F{balance}]]></valueExpression>
</categorySeries>
</categoryDataset>
<linePlot>
<plot/>
<categoryAxisFormat>
<axisFormat labelColor="#000000" tickLabelColor="#000000" axisLineColor="#000000"/>
</categoryAxisFormat>
<valueAxisFormat>
<axisFormat labelColor="#000000" tickLabelColor="#000000" axisLineColor="#000000"/>
</valueAxisFormat>
</linePlot>
</lineChart>
</band>
</detail>
</jasperReport>
JasperServletChart.java
package com.accord.servlet;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.accord.dao.Jdbc;
import com.accord.demo.Account;
import net.sf.jasperreports.engine.JREmptyDataSource;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRRuntimeException;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperRunManager;
public class JasperServletChart extends HttpServlet {
private static final long serialVersionUID = 1L;
public JasperServletChart() {
super();
}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ServletContext context = this.getServletConfig().getServletContext();
try {
//JasperCompileManager.compileReportToFile("E:/report/DbReport.jrxml");
JasperCompileManager.compileReportToFile(context.getRealPath("/jasper/Demo01.jrxml"));
} catch (JRException e1) {
e1.printStackTrace();
}//编译jrxml文件,生成jasper文件
File reportFile = new File(context.getRealPath("/jasper/Demo01.jasper"));
if (!reportFile.exists())
throw new JRRuntimeException("FileWebappReport.jasper "
+ "not found. The report design must be compiledfirst.");
String jasperPath = context.getRealPath("/jasper/Demo01.jasper");
FileInputStream isRef = null;
ServletOutputStream sosRef = null;
try {
isRef = new FileInputStream(reportFile);
sosRef = response.getOutputStream();
JasperRunManager.runReportToPdfStream(isRef, sosRef, null, Jdbc.getConnection());
//JasperRunManager.runReportToPdfStream(isRef, sosRef, parameters, new JREmptyDataSource());
response.setContentType("application/pdf");
} catch (Exception e) {
e.printStackTrace();
}finally {
sosRef.flush();
sosRef.close();
}
}
}
Jdbc.java
package com.accord.dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class Jdbc {
public static String driver="com.mysql.jdbc.Driver";
public static String url="jdbc:mysql://localhost:3306/db_bank";
public static String user="root";
public static String pwd="123456";
public static Connection conn= getConnection();
public static Statement statement= getStatement();
public static Connection getConnection(){
if(conn==null){
try{
Class.forName(driver);
conn=DriverManager.getConnection(url,user,pwd);
}catch(Exception e){
e.printStackTrace();
}
}
return conn;
}
private static Statement getStatement(){
if(statement==null){
try{
statement=conn.createStatement();
}catch(Exception e){
e.printStackTrace();
}
}
return statement;
}
public static ResultSet getResultSet(String sql){
ResultSet rs=null;
try{
rs=statement.executeQuery(sql);
}catch(Exception e){
e.printStackTrace();
}
return rs;
}
public static void closeAll(ResultSet rs,Statement st,Connection cn){
try{
if(rs!=null){
rs.close();
}
if(st!=null){
st.close();
}
if(cn!=null){
cn.close();
}
}catch(Exception e){
e.printStackTrace();
}
}
}
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>JasperReports</groupId>
<artifactId>JasperReports02</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>JasperReports02 Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports</artifactId>
<version>5.6.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.30</version>
</dependency>
<!-- 解决中文乱码 -->
<dependency>
<groupId>com.lowagie</groupId>
<artifactId>itextasian</artifactId>
<version>1.5.2</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>
</dependencies>
<build>
<finalName>JasperReports02</finalName>
</build>
</project>
web.xml
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>Archetype Created Web Application</display-name>
<servlet>
<servlet-name>JasperServlet</servlet-name>
<display-name>JasperServlet</display-name>
<description></description>
<servlet-class>com.accord.servlet.JasperServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>JasperServletDb</servlet-name>
<display-name>JasperServletDb</display-name>
<description></description>
<servlet-class>com.accord.servlet.JasperServletDb</servlet-class>
</servlet>
<servlet>
<servlet-name>JasperServletJavaBean</servlet-name>
<display-name>JasperServletJavaBean</display-name>
<description></description>
<servlet-class>com.accord.servlet.JasperServletJavaBean</servlet-class>
</servlet>
<servlet>
<servlet-name>JasperServletJavaBeanGroup</servlet-name>
<display-name>JasperServletJavaBeanGroup</display-name>
<description></description>
<servlet-class>com.accord.servlet.JasperServletJavaBeanGroup</servlet-class>
</servlet>
<servlet>
<servlet-name>JasperServletTable</servlet-name>
<display-name>JasperServletTable</display-name>
<description></description>
<servlet-class>com.accord.servlet.JasperServletTable</servlet-class>
</servlet>
<servlet>
<servlet-name>JasperServletChart</servlet-name>
<display-name>JasperServletChart</display-name>
<description></description>
<servlet-class>com.accord.servlet.JasperServletChart</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>JasperServlet</servlet-name>
<url-pattern>/JasperServlet</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>JasperServletDb</servlet-name>
<url-pattern>/JasperServletDb</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>JasperServletJavaBean</servlet-name>
<url-pattern>/JasperServletJavaBean</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>JasperServletJavaBeanGroup</servlet-name>
<url-pattern>/JasperServletJavaBeanGroup</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>JasperServletTable</servlet-name>
<url-pattern>/JasperServletTable</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>JasperServletChart</servlet-name>
<url-pattern>/JasperServletChart</url-pattern>
</servlet-mapping>
</web-app>