Jaspersoft 报表: 基于JDBC填充报表数据

哈哈 阅读:735 2021-03-31 18:09:38 评论:0

第一步:在Jaspersoft Studio工具中新建JDBC数据源

然后Next ,选择 Database JDBC Connection.

点击Test 显示 Successful! ,然后Finish!

第二步: 新建报表模板

1、新建报表模板人report3.jrxml,只保留Title Band 和 Detail Band.

2、模板右键 -> Dataset and QueryDialog

点击OK 后,在outline中生成Field.

将id,name等拖入到 Detail 1 Band中设计模板如下:

点击preview ,显示如下:

二、通过SpringBoot程序,使用JDBC作为数据源生成报表

核心代码:

package com.zzg.report; 
 
import java.io.File; 
import java.io.IOException; 
import java.io.InputStream; 
import java.sql.Connection; 
import java.sql.DriverManager; 
import java.util.HashMap; 
import java.util.Map; 
 
import javax.servlet.ServletOutputStream; 
import javax.servlet.http.HttpServletResponse; 
 
import org.springframework.core.io.ClassPathResource; 
import org.springframework.stereotype.Controller; 
import org.springframework.web.bind.annotation.PathVariable; 
import org.springframework.web.bind.annotation.RequestMapping; 
import net.sf.jasperreports.engine.JasperRunManager; 
 
@Controller 
@RequestMapping("/api/jdbc") 
public class JDBCController { 
	@RequestMapping("/{reportName}") 
	public void getReportByParam(@PathVariable("reportName") final String reportName, HttpServletResponse response) { 
		ServletOutputStream sosRef = null; 
		// jdbc 连接获取 
		try { 
			String url = "jdbc:mysql://****:3306/boot-setting?serverTimezone=UTC&useSSL=false&allowPublicKeyRetrieval=true"; 
			Class.forName("com.mysql.cj.jdbc.Driver"); 
			Connection conn = DriverManager.getConnection(url, "root", "****"); 
 
			// 获取文件流 
			ClassPathResource resource = new ClassPathResource("jaspers" + File.separator + reportName + ".jasper"); 
			InputStream jasperStream = resource.getInputStream(); 
 
			sosRef = response.getOutputStream(); 
 
			JasperRunManager.runReportToPdfStream(jasperStream, sosRef, null, conn); 
			response.setContentType("application/pdf"); 
		} catch (Exception e) { 
			e.printStackTrace(); 
		} finally { 
			try { 
				sosRef.flush(); 
				sosRef.close(); 
			} catch (IOException e) { 
				// TODO Auto-generated catch block 
				e.printStackTrace(); 
			} 
		} 
 
	} 
 
} 

pom 文件核心依赖包:

<!-- 报表系统:JasperReports --> 
		<dependency> 
			<groupId>net.sf.jasperreports</groupId> 
			<artifactId>jasperreports</artifactId> 
			<version>6.6.0</version> 
		</dependency> 
<!-- 中文字体文件 --> 
		<dependency> 
			<groupId>com.zzg.report</groupId> 
			<artifactId>font</artifactId> 
			<version>1.0.0</version> 
		</dependency>

效果展示:

声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号