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

第一步:在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>

效果展示:

猜你喜欢

转载自blog.csdn.net/zhouzhiwengang/article/details/90545016